AutoLayout中使用UIScrollView

UIScrollView添加约束要点:

1.scrollView与它的superview的约束关系用来确定scrollView的frame

2.scrollView中的『contentView』的约束关系用来确定scrollView的contentInsets

3.contentView的宽度和高度用来确定scrollView的contentSize

原则1:UIScrollView的size依赖于subviews

UIScrollView的size(即contentSize)则根据subviews所占据的size来计算。当然,如果contentSize的内容不足以布满整个UIScrollView时,滚动条将不会出现,UIScrollView也不会滚动。

原则2:subviews的size不能依赖于UIScrollView

很简单,因为原则1:UIScrollView的size依赖于subviews。如果subviews的size再依赖于UIScrollView,则布局引擎就混乱了。

要解决这个问题,我们需要把subview的宽度明确,起码不能和靠不住的UIScrollView的size相关。(可以与scrollView的父视图先关)

4、在代码中修改contentsize

有时候contentsize可能是动态的,需要在代码中修改。通常是在ViewController的viewDidAppear方法中setContentsize(可以是 constraint 的 IBOutlet)。

但是在我的项目中发现一个问题,iPhone6/iPhone5测试正常,在iOS6中设置无效,设置时打印contentsize是正常的稍后打印contentsize.height居然变为0了,最后将setContensize放在dispatch_async(dispatch_get_main_queue(), ^{ });中解决问题

5. 怎么不能滚动?

别急,这是因为 contentView 对于ScrollView 来说还不够大的缘故。如果像在ContentSize不够大的情况下也有滑动效果(其实是回弹效果),可以用一下属性

BOOL bounces 控制控件遇到边框是否反弹
BOOL alwaysBounceVertical 控制垂直方向遇到边框是否反弹
BOOL alwaysBounceHorizontal 控制水平方向遇到边框是否反弹
时间: 2024-08-10 06:40:16

AutoLayout中使用UIScrollView的相关文章

Storyboard、xib中的UIScrollView使用autolayout,使其能够滚动

Storyboard.xib中的UIScrollView使用autolayout,使其能够滚动 在使用storyboard和xib时,我们经常要用到ScrollView,还有自动布局AutoLayout,但是ScrollView和AutoLayout 结合使用,相对来说有点复杂.根据实践,我说一下我的理解,在故事板或xib中,ScrollView是根据其下面的一个View的大小来确定ContentSize的大小. 看一下效果 1. 创建一个项目,拖拽一个ScrollView到故事板中,如下图 2

在autolayout中加入每个view的weight

在autolayout中加入每个view的weight,这样相互之间的关系就更明确,比如: double iconViewWeight = 1; double titleLabelWeight = 12; double timeLabelWeight = 3; double standardWeigth = iconViewWeight; double iconViewWeightRatio = iconViewWeight / standardWeigth; double titileLabe

iOS Core Animation详解(四)AutoLayout中的动画

原创blog,转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK详解专栏 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言:AutoLayout定义了View的位置,也就是说,在Auto Layout的工程里,如果不修改约束本身,在视图重新绘制的时候,还会回到最开始的位置.AutoLayout中的动画与视图的位置和大小有关. 先看看效果 实现过程 在Storyboard上拖拽一

xcode中使用xib添加autolayout中constrain to margins的不同

在使用xcode7 在storyboard中添加autolayout中发现 如果添加在view 直接添加到viewcontroller的view 上 constrain to margins    只有左右20point的 如果view(viewB)没有直接添加到viewcontroller的view上而是添加到一个view 上,那么 viewB 的 constrain to margins是 上下左右各为8point的 仅是自己的一点体会,如果不对欢迎拍砖!!!

iOS Core Animation具体解释(四)AutoLayout中的动画

原创blog.转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK具体解释专栏 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言:AutoLayout定义了View的位置,也就是说,在Auto Layout的project里,假设不改动约束本身,在视图又一次绘制的时候.还会回到最開始的位置.AutoLayout中的动画与视图的位置和大小有关. 先看看效果 实现过程 在Storyb

解决“带有导航控制器中加入UIScrollView后,UIScrollView向下偏移问题”

一.问题描述 如果在带有导航控制器的控制器中加入UIScrollView,我们可以发现UIScrollView的高度自动增加了64(正好是一个导航栏加上状态栏高度),然后在UIScrollView在加子视图,会造成子视图显示向下偏移了64的高度,如下图: 效果图: 二.解决方法 方法一:在控制器viewDidLoad方法中加入  self.automaticallyAdjustsScrollViewInsets = NO; 看这个UIViewController的这个属性你就明白了,此属性默认为

iOS学习之Storyboard中的UIScrollView使用自动布局

在使用storyboard和xib时,我们经常要用到ScrollView,还有自动布局AutoLayout,但是ScrollView和AutoLayout 结合使用,相对来说有点复杂.根据实践,我说一下我的理解,在故事板或xib中,ScrollView是根据其下面的一个View的大小来确定ContentSize的大小. 看一下效果 1. 创建一个项目,拖拽一个ScrollView到故事板中,如下图 2. 选中ScrollView,添加约束. 3. 拖拽一个View到ScrollView上, 然后

iOS中 : UIScrollView在导航控制器中的自动偏移的问题解决

当你在一个navigation下的UIViewController中直接添加一个UIScrollViewController时:UIScrollView会自动的向下偏移20个点(有可能会偏移64个点,84个点)-(取决于你的设置,反正是会偏移),导致这样的原因比较绕,但是解决的方法很简洁: solution: 不要将UIScrollView 直接放在控制器上,可以先创建一个无关的UIView做炮灰: 在要放UIScrollView的地方,先放上炮灰UIView 有UIView点垫背,再在上面放U

Storyboard中使用UIscrollView添加约束的开发总结

第一次在项目中用storyboard做界面,一般的界面直接添加约束非常爽快 然后有个界面有scrollview,添加了约束还总是出错 刚开始使用了 wCompact,hRegular,滑动出现问题,有些界面滑动不了或者可以左右滑动 已经在viewDidLoad里面添加了scrollView的contentsize 约束什么的都没有问题,百思不得其解 后来上网查了一下资料 还是scrollView的contentsize的问题 scrollView的contentsize只能在viewDidApp