ios8 beta 4下无法识别AutoLayout容器相对位置

Posted

技术标签:

【中文标题】ios8 beta 4下无法识别AutoLayout容器相对位置【英文标题】:AutoLayout container relative position not recognised under ios8 beta 4 【发布时间】:2014-07-28 18:29:11 【问题描述】:

在我看来,我会像这样初始化一个视图:

UIView *statsView = [[UIView alloc] initWithFrame:CGRectMake(10, 130, 200, 12)];

在这个视图中,我创建了 3 个包含在前一个视图中的自动布局子视图。

    for (UIButton* v in [statsView subviews]) 
        v.translatesAutoresizingMaskIntoConstraints = NO;
       [statsView addSubview:v];
    
    NSDictionary *views = @@"reposts": v1,
                            @"likes": v2,
                            @"comments": v3
                            ;
    [statsView addConstraints:[NSLayoutConstraint
                               constraintsWithVisualFormat:@"H:|[reposts][likes][comments]"
                               options:NSLayoutFormatAlignAllTop| NSLayoutFormatAlignAllBottom
                               metrics:0
                               views:views]];

ios7 上,容器的 Y 位置是 130(在 initWithFrame 中定义),但在 ios8 上,Y 位置看起来像“0”。

有什么想法吗?

【问题讨论】:

这里也一样。你能想出什么办法吗? 【参考方案1】:

我问了一个关于同样问题的其他问题,Saldorino 给了我一个很好的答案

Xcode6 - Autolayout view in an other autolayout view

问题在于缺少垂直位置约束。

[statsView addConstraints:[NSLayoutConstraint
                           constraintsWithVisualFormat:@"V:|[comments]"
                           options:0
                           metrics:0
                           views:views]];

【讨论】:

以上是关于ios8 beta 4下无法识别AutoLayout容器相对位置的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 beta - Today 扩展无法识别嵌入式框架

XCode 7 (Beta 3 & 4) 无法下载和安装 iOS 8.* 模拟器

XCode 5.1 Beta 4 无法识别 iOS 7.1 Beta 4 测试设备

iOS 开发:将我的 iPhone 4 更新到 iOS 4.3 Beta 3 后,我的应用程序显示“Game Center 无法识别此游戏”

Xcode 6.4“无法下载和安装 iOS 8.3 模拟器”

iOS8 Beta Ad-Hoc 应用下载 (itms-services)