jan*_*kes 7 objective-c uiscrollview ios autolayout
我在我的项目中使用autolayout,我有一个滚动视图,其中有一个按钮.我已经滚动滚动视图,但没有占用整个屏幕.
我试着按照这里的教程:https://developer.apple.com/library/ios/technotes/tn2154/_index.html,以及我在这里查看了一些类似的问题.问题是我希望scrollview的内容居中,而不是固定在顶部/底部/左/右.
这是我的视图层次结构:

你能帮帮我吗?
您已在滚动条视图及其超级视图之间添加了约束.这些约束确定滚动视图的框架.您可以将滚动视图视为一个窗口,通过该窗口可以看到后面的内容.框架就是窗口的大小.当然,您可以滑动窗口,这样您就可以看到部分内容的景点.
现在你有了窗口的大小,但你还需要告诉Xcode内容的大小.如果你只是说把所有东西放在中间但没有告诉宽度,Xcode怎么知道中间的位置?
所以,你必须告诉宽度(以及高度).让我们考虑一个简单的例子,如何在滚动视图中居中单个标签.

您应该首先将滚动视图的边缘固定到其超视图,就像您所做的那样.之后,您应该在标签的边缘和滚动视图的边缘之间添加约束,此外,还应添加标签的with和height约束.
前导空间,尾随空间和宽度一起给出了内容的内容,而顶部空间,底部空间和高度一起给出了内容的高度.
| ---前导空间--- |标签宽度| ---尾随空间--- |
| ----------滚动视图的内容------------- |
但是您可能希望将内容视图的内容设置为等于屏幕的内容,然后您需要进行一些编程.在代码中设置出口属性
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *trailingSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leadingSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *width;
Run Code Online (Sandbox Code Playgroud)
在你viewWillLayoutSubviews这样做
CGFloat contentWidth = self.view.frame.size.width;
CGFloat horiPadding = (contentWidth - self.width.constant) / 2;
_trailingSpace.constant = horiPadding;
_leadingSpace.constant = horiPadding;
Run Code Online (Sandbox Code Playgroud)
现在你的标签位于滚动视图的水平中心!您的滚动视图已经知道其内容,因此您不需要为滚动视图中添加的任何其他视图执行此操作:您只需添加中心约束即可.
您也可以为高度做同样的事情.


| 归档时间: |
|
| 查看次数: |
4228 次 |
| 最近记录: |