xib中设置ScrollView
来源:互联网 发布:淘宝网支持的网上银行 编辑:程序博客网 时间:2024/05/21 12:01
为ScrollView布局实际上是为ScrollView里的content设置布局。
区别于一般组件,ScrollView有一个contentSize的概念。contentSize是ScrollView填充的内容大小,
ScrollView会根据这个范围来设置滚动区域。
假如我们对ScrollView里的内容按照一般组件那样设置布局。很容易出现组件内容不能拖动
或者直接在布局界面就出错的情况: (无法确定拖动的区域)
has ambiguous scrollable content height
has ambiguous scrollable content width
为ScrollView设置布局
一,新建一个xib取名为MyScrollView.xib
二,在viewDidLoad里加载该Xib,并设置xib距离父视图的四个边的边距为0
- (void)viewDidLoad {
[super viewDidLoad]; //加载xib文件
[self loadScrollView];
}
/** * 加载xib,并设置布局全屏显示。*/
-(void)loadScrollView{
MyScrollView *myScrollView = [[[NSBundle mainBundle] loadNibNamed:@"MyScrollView" owner:self options:nil] firstObject];
[self.view addSubview:myScrollView]; //... //设置xib距离父视图的四个边的距离为0
}
三,打开新建的MyScrollView.xib,拖入一个ScrollView组件,设置距离四个边的距离为0。
再拖入一个View到ScrollView上,同样设置四个方向边距为0。
此时会报错:
has ambiguous scrollable content height
has ambiguous scrollable content width
为View设置了四个方向的边距,但是ScrollView并不知道contentSize的大小。
设置四个边距实际是告诉ScrollView内容会“撑到”多大。
ScrollView必须知道四条边多大来确定contentSize的大小。
四,设置View和ScrollView的宽度相等(Equal Widths)。此时错误只剩下一个:
has ambiguous scrollable content height
我们为其设置了两边的宽度,但高度还未确定。接下来,我们通过向View添加组件来填充View的高度。
五,在View上再拖入一个子View并设置四个方向上的边距为10,高度为2000,设置背景色为粉色,此时错误消失。
运行会看到一个可以上下拖动的粉色面板。
组件内置大小
假如有多个子View,他们纵向依次间隔排列。但中间一个View并不确定高度(至少在xib布局时无法给出一个明确高度)。如果是普通的View,这种布局没有问题,但对于ScrollView就会出错:
has ambiguous scrollable content height
此时,我们可以为其设置intrinsic size(内置大小),属性面板里的 intrinsic size 选项。一个原始的UIView对象,它的内置大小为0。我们通过设置占位符来改变内置宽、高,也可以根据需要只设置其中一项。
然后在xib绑定类的awakeFromNib函数里设置该View的高度约束,awakeFromNib函数在约束生效前执行。若没有设置高度约束也不会出错,但该View不显示。因为组件的内置大小是由组件本身的内容所确定的。UIView不像UIButton或UILabel,它的内容为空,运行时UIView的内置大小为0。
- (void)awakeFromNib {[super awakeFromNib]; //重新设置高度
[self.topSubView addConstraint:[NSLayoutConstraint constraintWithItem:self.topSubView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:250]];
}
- xib中设置ScrollView
- XIB中添加scrollView并设置约束
- xib中添加scrollview
- xib适配下scrollView的ContentSize设置
- 如何ScrollView在XIB或者Storyboard中设置约束并实现翻页滚动效果
- xib 中 Button 设置
- xib中使用scrollView无法滑动
- xib中使用Scrollview无法滑动情况
- XIB中设置UIView圆角
- xib或者storyboard中给scrollview添加约束
- ScrollView Xib布局
- 用xib拖scrollView
- ScrollView的xib人生
- scrollView与xib
- xib中设置view的圆角
- xib中设置TableView的HeaderView
- xib中设置按钮的边框颜色
- xib中UIView设置圆角
- hibernate配置文件hibernate.cfg.xml的详细解释
- 自己编译JDK
- Hbase使用MultiTableOutputFormat实现多表输出MapReduce job
- ERROR:invalid byte sequence for encoding"UTF8"
- swift自制工厂模式
- xib中设置ScrollView
- 2015 年最棒的 5 个 HTML5 框架
- C#操作图片存入XML和显示XML图片
- iOS框架和服务知识点
- 应用程序和驱动的简易交互方式的实现
- MFC--设置静态文本框的文字的字体、大小和颜色
- Android开发学习资源
- 20160308 C#代码实现Excel数据导入到SQL Server数据库中
- Android--将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)