首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动布局-使视图高度相对于半个superview高度

自动布局-使视图高度相对于半个superview高度
EN

Stack Overflow用户
提问于 2013-02-18 20:01:43
回答 6查看 93.2K关注 0票数 140

最近一直在研究自动布局,我被一个看似微不足道的问题所困扰。我有一个视图,我想坐在屏幕的顶部,占据屏幕高度的一半。在自动布局之前很简单--只需将它固定在适当的位置,并告诉它在superview调整大小时垂直扩展即可。

现在,我无论如何也不知道该怎么做。下面是我尝试设置它时得到的结果:

底部空间约束被设置为“equals284”,当我切换到iPhone4布局时,这对我来说是绝对的,也是绝对无用的,因为它在屏幕底部保留了284点的空间,并将视图缩小到不再是屏幕大小的一半。并且没有办法将该约束设置为等于任何其他视图高度的某一部分。

在挣扎了一段时间后,我能想到的唯一方法就是在这个视图下面引入另一个视图,将它们的高度固定在相同的位置,让它们坐在彼此的上下,然后将第二个(底部)视图设置为不可见。这看起来有点丑陋!

我是不是漏掉了什么明显的东西?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-06-20 02:43:41

现在,至少在Xcode 5.1.1版本中,这在IB中是可能的。虽然我花了一些时间才弄明白它实际上是超级简单的:

首先创建基本的顶部对齐约束(您还需要设置底部、左侧和右侧约束,就像法线一样)。然后选择约束并导航到Attribute检查器:

然后你可以调整乘数。如果你想要50%的超级视图,把它留在1,因为它是按照超级视图的中心对齐的。这也是一个很好的方法来创建其他百分比的视图(比如25%的超级视图)

票数 175
EN

Stack Overflow用户

发布于 2014-11-02 22:41:52

可以在任意视图之间设置精确比例的故事板解决方案:

Now:

利润!

另请注意,此方法适用于不同嵌套级别的视图,并且(显然)适用于宽度

附注:有时“颠倒第一项和第二项”约束或设置反向乘数(例如2而不是0.5)可能会有帮助(但如果您不了解视图之间的关系,这些方法就不会有帮助)。

票数 191
EN

Stack Overflow用户

发布于 2013-02-18 22:47:10

过了一段时间后,我得出了以下结论。

我注意到这是一个答案,但它不是很令人满意,因为它假设你实际上不能在Interface Builder中做到这一点,但是正确的约束可以在以后的代码中添加为:

代码语言:javascript
运行
复制
- (void) viewWillAppear:(BOOL)animated
{

    NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:upperview
                                                                 attribute:NSLayoutAttributeHeight 
                                                                 relatedBy:0 
                                                                    toItem:self.view
                                                                 attribute:NSLayoutAttributeHeight
                                                                multiplier:.5 
                                                                  constant:0];
    [self.view addConstraint:constraint];

}

基本上,它将self.view的高度设置为0.5的乘数,作用于上方视图。我不得不将IB中底部垂直空间约束的优先级设置为低于1000,以避免出现大量关于违反约束的运行时消息。

因此,如果有人能展示如何在界面生成器中做到这一点,那就更好地回答我的问题,否则我猜这是最好的(目前)??

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14935825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档