我想使用UIScrollView,因为要显示的内容超过屏幕的高度.
因此,我只想要一个垂直滚动而不是一个水平滚动.
我正在使用故事板通过AutoLayout绘制视图.
以下是我的UIViewController与UIScrollView的截图:
然后我将标签更改为一个这样的大文本
override func viewDidLoad() { super.viewDidLoad() self.label1Label.text = "Seize jours après la chute du président Blaise Compaoré,le Burkina Faso a un nouveau chef d'EtatA l'issue d'ultimes tractions,civils et militaires se sont accordés,lundi 17 novembre,sur le nom du diplomate Michel KafandoSeize jours après la chute du président Blaise Compaoré,sur le nom du diplomate Michel Kafando" self.label1Label.numberOfLines = 0 self.label1Label.sizeToFit()
我的问题是,如果我没有手动设置我的contentView(在UIScrollView内)的宽度,滚动是水平的,而不是垂直的. (看下面的截图):
我试图设置contentSize,我已经看到许多google post但没有成功:
self.scrollView.contentSize = CGSizeMake(400.0,600.0)
如果我为我的内容视图(即320pts)手动设置宽度,则滚动将是垂直(GOOD),但是根据iphone大小,它不会覆盖屏幕的整个宽度,如以下屏幕截图所示:
问题是:使用UIScrollView具有遵守autolayout约束的contentView(全屏:0top – 0bottom – 0left – 0right)的正确实现是什么,滚动只是垂直的.
非常感谢你的帮助!
解决方法
http://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/
我也有我自己的代码(没有storyboard实现)在github上.
https://github.com/nadthevlad/AutolayotScrollview
您不想设置内容或视图的高度或宽度.
而是要使用Autolayouts引脚和约束来设置scrollview的行为.
>创建你的UIScrollView * scrollView.
>您要创建一个UIView * contentView,您将把其余的视图元素放入.
[self.view addSubview:scrollView]; [scrollView addSubview:contentView]; [contentView addSubview:_label1]; [contentView addSubview:_label2]; [contentView addSubview:_label3]; [contentView addSubview:_label4]; [contentView addSubview:_label5]; [contentView addSubview:_label6];
将scrollView的4个边缘固定到self.view的4个边将contentView的顶部和底部边缘固定到scrollView的顶部和底部.这是棘手的部分.要设置水平尺寸,您需要将contentView的前导(右)和尾(左)边缘固定到前后边缘self.view而不是scrollView.即使contenView是scrollView的一个子视图,它的横向约束将会到达scrollView之外,并连接到self.view.>将任何其他视图元素固定为contentView,正常情况下.