更改高度约束时的iOS自动布局问题

Posted

技术标签:

【中文标题】更改高度约束时的iOS自动布局问题【英文标题】:iOS Autolayout issue when change in height constraint 【发布时间】:2017-06-26 12:42:41 【问题描述】:

我必须创建可扩展视图(不采用表格视图)。在按钮上单击它应该是 expand/collapse 。我设置高度约束并点击按钮,我用下面的代码展开/折叠

@IBAction func btnLastDayCostExpandClicked(_ sender: Any) 

        if isLastdayCostOpened 
            isLastdayCostOpened = false
           // lastDayCostHeightConstraint.constant = 34
            lastDayHeightConstraint.constant = 34

            UIView.animate(withDuration: 0.5) 
                self.view.layoutIfNeeded()
            

         else 
            isLastdayCostOpened = true
           lastDayHeightConstraint.constant = 90
            UIView.animate(withDuration: 0.5) 
                self.view.layoutIfNeeded()
             
         
    

第一次加载屏幕时

这是不正确的,因为白色视图向上(高度 30)并且在单击按钮后展开

看起来不错

任何帮助!

【问题讨论】:

将视图的 clipToBounds 属性设置为 TRUE。 第一次加载时约束的constant是什么? @Fogmeister 30 第一次。什么时候展开它设置为 90 @DSDharma 让我在运行时检查。 @DSDharma 非常感谢它完成 【参考方案1】:

理想情况下,请分享有关您的视图层次结构以及您想要实现的目标的更多信息,因为我有点困惑。

根据我收集到的信息,您在折叠视图以隐藏包含元素时需要。如果是这种情况,请确保您的带有白色 BG 的 UIView 是您想​​要显示/隐藏的元素的父视图,然后尝试以下操作:

对于包含这些元素(白色背景)的 UIView,您需要将 clipToBounds 设置为 true。

这样,当它折叠时,它会隐藏包含的元素。

希望对您有所帮助。

【讨论】:

以上是关于更改高度约束时的iOS自动布局问题的主要内容,如果未能解决你的问题,请参考以下文章

如何更改自动布局约束

UICollectionView 上的动画自动布局约束更改

更改方向的自动布局约束

动态单元格高度的自动布局约束

iOS 视图高度和自动布局

使用自动布局更改约束