在此之前,我向您道歉,因为我是iOS编程的初学者。
我想使用UIScrollView
,因为要显示的内容超过了屏幕的高度。因此,我只想要一个垂直滚动,而不是水平滚动。
我正在使用Storyboard来用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é, 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 Kafando"
self.label1Label.numberOfLines = 0
self.label1Label.sizeToFit()
我的问题是,如果我不手动为我的contentView (在UIScrollView
中)设置一个宽度,滚动是水平的,而不是垂直的。(请看下面的截图):
我试着设置contentSize,就像我在许多谷歌文章中看到的那样,但没有成功:
self.scrollView.contentSize = CGSizeMake(400.0, 600.0)
如果我手动设置内容视图(i.e : 320pts
)的宽度,滚动将是垂直的(很好),但取决于iphone大小,它不会覆盖屏幕的整个宽度,如下面的屏幕快照所示:
问题是:使用UIScrollView
的正确实现是什么,使一个contentView
尊重autolayout约束(full screen : 0top - 0bottom - 0left - 0right
),而滚动仅是垂直的。
非常感谢你的帮助!
发布于 2014-12-07 19:07:39
Mike在原子对象博客上展示了如何使用Interface正确地完成这个任务。
http://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/
我在github上也有我自己的代码(没有故事板实现)。
https://github.com/nadthevlad/AutolayotScrollview
您不希望设置内容或视图的高度或宽度。相反,您希望使用Autolayout引脚和约束来设置滚动视图的行为方式。
发布于 2014-12-06 18:53:22
允许UIScrollView只向一个方向滚动的诀窍是使受限制维度的UIScrollView内容大小与UIScrollView在同一维度中的帧大小相同。因此,在这种情况下,scrollview.contentSize.width
应该等于scrollview.frame.size.width
。
考虑到这一点,尝试如下:
就我个人而言,我真的不是汽车布局的粉丝。如果你有兴趣尝试这个没有自动布局--即。只需使用代码而不是约束--您可以关闭视图控制器视图的自动布局,并将viewWillLayoutSubviews
方法更改为如下所示:
override func viewWillLayoutSubviews()
{
super.viewWillLayoutSubviews();
self.scrollView.frame = self.view.bounds; // Instead of using auto layout
self.scrollView.contentSize.height = 3000; // Or whatever you want it to be.
}
发布于 2017-04-17 13:05:14
这就是为什么我总是在有约束的情况下垂直滚动故事板:
1-拖动视图控制器
2-将带有约束的控制器主视图( L=0,T =0,T =0和B=0)中的滚动视图拖动到其superview (控制器的主视图)。
3-将一个UIVIew拖到滚动视图中,以作为其内容视图,约束为L-0、T=0、T=0、B=0到其superview(滚动视图)。
4-停止水平滚动,使内容视图与带约束的滚动视图相同宽度。
5-使内容视图高度与控制器视图高度相等,这是临时,直到我们用可滚动的内容填充它。
6-在content视图中添加控件直到完成。
7-最重要的是删除内容视图高度第5点中所做的约束,而不是从内容视图底部的控件中进行约束,使其与内容视图底部对齐。这有助于使内容视图从上到下从第一个控件开始直到最后一个控件(这都取决于这个步骤)。
8-只是运行和结果应该是预期的,否则请让我知道。
希望这能有所帮助!
https://stackoverflow.com/questions/27326924
复制相似问题