使用自动布局以编程方式更改框架

2020/12/16 00:22 · ios ·  · 0评论

我有一个UITableView自动布局,当GADBannerView屏幕底部出现时,我需要减小高度

不幸的是,使用自动版式无法修改框架。解决方案是删除“自动版面”并手动设置框架。这是非常危险的,因为我的所有应用程序都可以在3.5'和4.0'显示器上正常工作,并且删除“自动布局”会增加新的测试阶段和更多工作。

即使启用了“自动布局”,是否可以更改框架?

让您UITableView将底部布局约束设置为0,然后创建一个IBOutlet现在让你的GADBannerView高度40,从而改变你outlet.constant = 40;欲了解更多有关如何进行IBOutlet,并改变其值看看到这个希望这将有助于。

编辑:对于那些寻求帮助的人,请遵循以下简单步骤(因为这是公认的答案,所以我认为值得举一个例子。在此示例中感谢@manujmv)

  1. 在界面中为视图创建高度约束。

  2. 然后在您的类中为此约束添加一个IBOutlet对象。例如:

    @属性(弱,非原子)IBOutlet NSLayoutConstraint * heightConstraint;

在连接面板中连接该对象。

  1. 然后在需要时更改此约束的值

    self.heightConstraint.constant = 40;

与其尝试更改视图的框架,不如使用自动布局添加高度约束并减小该约束的值。请执行以下步骤:

  1. 在界面中为视图创建高度约束。
  2. 然后在您的类中为此约束添加一个IBOutlet对象。例如,

     @property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;
    

    在连接面板中连接该对象。

  3. 然后在需要时更改此约束的值

     self.heightConstraint.constant = 40;
    

还有一件事,[self.view layoutIfNeeded];一旦改变约束,就必须调用方法。

请享用 :)

你可以找出这样的约束

extension UIView {
    var heightConstaint: NSLayoutConstraint? {
        get {
            for constraint: NSLayoutConstraint in constraints {
                if constraint.firstAttribute == .height {
                    if constraint.relation == .equal {
                        return constraint
                    }
                }
            }
            return nil
        }

        set{
            setNeedsLayout()
        }
    }
}
本文地址:http://ios.askforanswer.com/shiyongzidongbujuyibianchengfangshigenggaikuangjia.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!