通过 UIScrollView 使用代码中的自动布局

Posted

技术标签:

【中文标题】通过 UIScrollView 使用代码中的自动布局【英文标题】:Using autolayout from code with UIScrollView 【发布时间】:2012-12-14 23:02:39 【问题描述】:

我正在尝试使用代码自动布局来正确处理我的 UIScrollView 中的旋转,该 UIScrollView 包含在运行时为 UIPageControl 的每个页面生成的许多 UILabel。

我没有找到这么多的例子,所以我问是否有人有关于 UIScrollView 和 NSLayoutConstraints 的自动布局的例子。

已编辑 更清楚一点:我在运行时创建不同的 UILabel 并将它们添加到 UIScrollView。纵向是:

(来源:disclafani.org)

在横向时是错误的:(来源:disclafani.org)

如何使用自动布局解决?我试过使用:

NSLayoutConstraint *cons1=[NSLayoutConstraint
constraintWithItem:label 
attribute:NSLayoutAttributeLeft          
relatedBy:NSLayoutRelationEqual 
toItem:label2 attribute:NSLayoutAttributeLeft 
multiplier:1.0 
constant:[UIScreen mainScreen].bounds.size.width*-1
                          ];

但它不起作用,我认为这不是正确的方法

【问题讨论】:

你有没有看过我指给你的代码示例? 【参考方案1】:

实际上有两种截然不同的策略,Apple 在this article 中对其进行了详细描述,我在这两个示例中进行了说明:

https://github.com/mattneub/Programming-ios-Book-Examples/tree/master/iOS6bookExamples/ch20p573scrollViewAutoLayout

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/iOS6bookExamples/ch20p573scrollViewAutoLayout2

但请记住,UILabel 是一个非常特殊的情况,因为它使用了固有的大小规则。如果不了解您案件的更多细节,很难说更多。

【讨论】:

这些链接现在已断开。你能把答案贴在这里吗? 本书更新了另一个版本,适用于 iOS 7。所有 iOS 6 书籍示例仍然存在,但已移动;只需在项目名称前添加“iOS6bookExamples”(就像我现在所做的那样)。

以上是关于通过 UIScrollView 使用代码中的自动布局的主要内容,如果未能解决你的问题,请参考以下文章

自动布局和 UIScrollView

如何将 UIScrollView 的“主要”内容设置为屏幕高度-“次要”内容“首屏”

通过故事板和自动布局完全使用 uiscrollview 水平滚动

UIScrollView 中的 UITextView 使用自动布局

UIScrollView 中的自动布局使用 Cirrious.FluentLayouts.Touch

带有自动布局的 UIScrollView 中的 UITableViews