Gas*_*sim 25 objective-c uiscrollview ios autolayout swift
我想让AutoLayout UIScrollView与它一起工作,并且我遇到了一些麻烦.这是我做的:
UIScrollView在主视图内添加框架:[top:0,left:0,width:320,height:568]
UIView在UIScrollViewwith frame和bgcolor black中添加"ContentView" :[top:0,left:0,width:320,height:568]
设置UIScrollView约束:[top:0,bottom:0,left:0,right:0]
设置"ContentView"约束:[top:0,bottom:0,left:0,right:0]
对齐"ContentView"中的项目
将主视图bgcolor设置为灰色(查看发生了什么)
以下是问题的屏幕截图:http://imgur.com/P8s9lB0
由于某种原因,约束使内容视图位于屏幕的中间.此外,它向各个方向滚动.我希望内容只能在垂直方向上滚动UITableView,所以我不能这样移动:http://imgur.com/lBCwfAS
我究竟做错了什么?我已经检查了StackOverflow和Google中可以找到的所有教程和答案,并且没有人真正有一个奇怪的问题,所以我正在寻求帮助.
编辑:我还添加了ContentView的宽度和高度作为约束,这也没有帮助.
Chr*_*emp 41
您可以完全使用约束来完成此操作,这非常简单.
该UIScrollView只需要了解多少宽度和空间具有里面.因此,它需要有一些固定的Leading,Trailing,Top和Bottom约束.内容的宽度和高度也需要修复(这并不意味着我必须具体说明.我仍然可以使用约束来实现这一点.)
UIScrollView根据需要添加和位置.UIView内部UIScrollView的内容.Leading,Trailing,Top和Bottom内容的限制UIView是0.Equal Width向UIScrollView和添加约束UIView.这将使其仅垂直滚动.UIView.然后,您可以指定内容视图的高度(blech),也可以通过确保底部控件约束到内容视图的底部来使用其中包含的控件的高度.我做到了这一点并且有所作为.
小智 20
要禁用水平滚动,可以在(void)scrollViewDidScroll方法中设置内容大小.
[self.scrollView setContentOffset: CGPointMake(0, self.scrollView.contentOffset.y)];
Run Code Online (Sandbox Code Playgroud)
您还需要设置方向锁定,因此一次只能使用1个滚动方向. https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScrollView_Class/index.html#//apple_ref/occ/instp/UIScrollView/directionalLockEnabled
self.scrollView.directionalLockEnabled = YES;
Run Code Online (Sandbox Code Playgroud)
在 Xcode 12.1 垂直滚动视图设置中使用 Swift 4-5 进行测试
4.我们需要设置与滚动视图相关的uiview的约束。按住 Control 单击 uiview,然后附加到滚动视图。
总结一下Leszek S的答案:
为了具有垂直滚动视图,滚动视图内的所有视图必须设置其 宽度约束.很容易设置为滚动视图的超级视图.
原因是滚动视图不会水平滚动,只要其子视图不需要水平滚动即可.例如,如果您有一个标签,设置为0行,自动布局将尝试在开始添加行和换行符之前使标签尽可能宽.如果标签上没有明确的宽度约束,它只会使滚动视图内容区域更宽.跟踪滚动视图的约束将被忽略.
如果您有一堆视图,您可能希望将它们放在包含该视频的单个视图中.对于我的情况,我只有5或6个标签,可以动态改变高度,但不应该改变宽度,所以我只是使它们的宽度与滚动视图相同.和宾果游戏,垂直滚动视图,标签根据文本增长或缩小.
| 归档时间: |
|
| 查看次数: |
27534 次 |
| 最近记录: |