【问题标题】:How to setup a view with a half of screen height?如何设置屏幕高度一半的视图?
【发布时间】:2015-05-26 11:03:08
【问题描述】:

我想为所有设备将 view1 的高度设置为屏幕高度的一半(当设备处于纵向模式时)

这是我想要的样子:

所以我对 View1 的高度进行了自动布局

    @IBOutlet weak var heighConstraint: NSLayoutConstraint!

我的viewwillappear函数在这里:

override func viewWillAppear(animated: Bool) {
        self. heighConstraint.constant = self.view.frame.size.height / 2
}

但是当我运行我的应用程序时它不起作用。这里有什么问题?

【问题讨论】:

  • 它显示了什么?它是否进入循环?
  • 它显示了我在主故事板上设置的 view1 的高度
  • 我刚刚编辑了我的问题以便清楚地理解。
  • 您的约束是如何附加到情节提要的?你能在 IB 中显示约束的屏幕截图吗?
  • 您尝试过 didAppear 还是 didLayed?

标签: ios xcode swift autolayout


【解决方案1】:

我知道接受的答案是正确的,但有更简单的方法 -

添加视图(以黄色显示的视图)。将其固定到三个边缘(顶部、前导和尾随)。我已将其设置为 0,但根据您的需要进行更改。

创建高度等于约束到主视图

在 Inspector 视图中打开该约束并将乘数编辑为 0.5。 设置为 0.5 取 mainView 一半高度的高度值。

只要确保 FirstItem = View1 和 SecondItem = SuperView 如图所示。

【讨论】:

  • 嘿。这是“罗马”的另一种方式,我会记下这种方式。谢谢
  • 不提。 Xcode 中的替代品是无穷无尽的!
  • 在我看来更好更容易。
【解决方案2】:

尝试在viewDidLayoutSubviews方法中改变heightConstraint的常量值。

override func viewDidLayoutSubviews() {
    heightConstraint.constant = self.view.frame.size.height / 2
}

【讨论】:

    【解决方案3】:

    请试试这个。希望它会帮助你。下面的行将采用设备的边界,并根据它设置框架或高度。

    view1.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height/2);
    

    希望这会有所帮助!!!祝你好运...

    【讨论】:

    • 在使用自动布局时设置框架不能可靠地工作。您必须更改约束,就像 OP 所做的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多