UIScrollView的多ContentView的问题
来源:互联网 发布:网络剧特点是什么 编辑:程序博客网 时间:2024/06/05 06:03
这种场景最多的就是翻页,例如网易新闻客户端的滑动翻页等。没有用autoLayout时可以通过设置contentSize解决翻页的问题。用了autoLayout也可以用比较方便的方法解决。
这个例子的需求是:两个页面滑动。
下面直接上例子:
新建一个工程,名为AutoLayout+UIScrollView,和之前的一样把Use Size Classes
取消掉(因为还要兼容iOS6)。选中Main.stroyboard,拖动一个ScrollView到self.view上,设置scrollView的上下左右约束,拖动contentView到scrollView上,设置上下左右的约束,但是要注意将Width
的约束写死为640(因为模拟器中为320,而需求是2页,所以为640),这个时候在stroyboard上看不下contentView(因为640已经超过了320了),可以设置Simulated Metrics下的Size为 Freedom
,
这样就可以调整self.view的显示尺寸了。
注意到前面写死的640了,这个值在iPhone5s以下都是正确的,但是iPhone6及以上都是错了。所以我们需要将这个约束单独的作为一个property,如下所示设置为
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentSizeWidth;//不要忘了在viewDidLoad中设置:self.contentSizeWidth.constant = self.view.bounds.size.width * 2;
展开之后的视图是这个样子的:
这样就比较直观了,然后通过等分布局的思想,往各自的contentView上加各种视图。最终的各种约束是下面的样子:
上图的中间一条白色的view,是作为中心参考view的,这样方便整个contentView的布局。
之所以把这个作为例子是因为UIScrollView在AutoLayout下是个特殊的view,因为scrollView的subView的约束是针对contentSize而不是bounds,所以scrollView的subView是不能简单的通过和scrollView之间的各种约束来决定大小的,实际操作中可能会出现Has ambiguous scrollable content width/height
的warning,如果出现这个warning,说明有错了。在网上有看到其他人用新建一个参考View的方法来解决这个问题,我在这里是通过先写死Width
约束后改其具体的值来实现的。
- UIScrollView的多ContentView的问题
- UIScrollView的contentView 助于理解
- 关于(UITableViewcell)contentView高度的问题
- AutoLayout 中使用 UIScrollView (多个ContentView)
- UITableViewCell的contentView
- 如何在 AutoLayout 中使用 UIScrollView (多个ContentView)
- 如何在 AutoLayout 中使用 UIScrollView (多个ContentView)
- 如何在 AutoLayout 中使用 UIScrollView (多个ContentView)
- 如何在 AutoLayout 中使用 UIScrollView (多个ContentView)
- 如何在 AutoLayout 中使用 UIScrollView (多个ContentView)
- Activity的重新设置contentview
- iOS UICollectionViewCell 的 contentView 注意事项
- UIScrollView 的subViews的问题
- UIScrollView不能滚动的问题
- UIScrollView无法滚动的问题
- Autolayout---UIScrollView的一些问题
- UIScrollView上部空白的问题
- 关于UIScrollView的约束问题
- 进制与位运算(二)
- Servlet知识点总结
- 信息安全工程师 学习笔记(九)
- 360前端星计划(二)
- 线性表 链表结构的实现
- UIScrollView的多ContentView的问题
- ubuntu-C++拿到本机IP地址
- LeetCode 99. Recover Binary Search Tree Add to List
- css3字体缩放样式-webkit-text-size-adjust的用法详解
- TCP/IP四层模型
- 信息安全工程师 学习笔记(十)
- Python 类中Name mangling和下划线命名
- [codewars]6.给定的一个的阵列和零的等效二进制值转换为整数。
- 深入理解C++强制类型转换