1.设定多个视图在宽度上保持2:1
场景是这样的,我页面中在横向放置个视图,左右放置,高度固定,其中一个视图屏幕的2/3,另一个视图占屏幕的1/3。设置步骤如下
1、拖动2个view到屏幕中,取名为view1 和view2
2、设置view1和view2的约束
添加view1约束为left=0;top=64;height=200;
添加view2约束为trailing=0;top=64;hegith =200;
添加view1和view2水平距离约束为0
添加view1和view2 withsequal约束 设置约束的属性值multiplier 为1:2
约束截图如下
3.参照例子中“固定横框比1:2”
2.设置视图的宽度、高度为固定比例
场景是这样的,APP首页要做一个轮播广告。广告的图片比例是固定的2:1,由于现在苹果屏幕宽度不在单一,所以没法通过width和height来设置。这个时候可以通过设置视图的XX属性来控制。下面介绍步骤:
1、拖动自定义视图到主视图;
2、设定自定义视图约束;
约束为left=0;right=0;top=0;aspect radtio=2:1。整体约束截图如下
3.参照例子中“页面视图2:1”
3.旋转视图
参照例子中“旋转视图”
4.自定义tableView
应用场景,tableCell的内容是自定义的,其中包含2个View,这2个view是自定义的。实现操作如下
1、首先按部就班,拖动tableView,创建约束
2、创建一个动态Cell,其中拖动2个View, 把class设为你自定义的类GoodsView
3、创建自定义view,取名GoodsView,这里需要注意的是 在xib中设置GoodsView的File's Owner的Classes为GoodsView,此时,如果按照通常设置View的Class为GoodsView,则tableCell在初始化的时候只会创建GoodsView对象,但是里面的属性是不能初始化的
4、GoodsView中实现自定义代码
- (id)initWithCoder:(NSCoder *)aDecoder { if (self = [super initWithCoder:aDecoder]) { UIView *containerView = [[[UINib nibWithNibName:@"GoodsView" bundle:nil] instantiateWithOwner:self options:nil] objectAtIndex:0]; CGRect newFrame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); containerView.frame = newFrame; [self addSubview:containerView]; } return self; }
具体参照例子中“自定义tableView”
5.自定义tableView高度
应用场景是这样的。有一个tableView,其中的cell高度是不不固定的,需要根据填充的内容来进行高度计算。
1、设置UILabel的lines为0;
2、选中UILabel的Explicit
3、设置label的约束
4、通过代码动态计算高度
- (CGFloat)heightForAddressListCellAtIndexPath:(NSIndexPath *)indexPath { static CustomHeightCell *cell = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ cell = [self.mainTableView dequeueReusableCellWithIdentifier:@"CustomHeightCell"]; }); AddressInfo *info = [self.addressArray objectAtIndex:indexPath.row]; cell.nameLabel.text = info.receiver; cell.mobileLabel.text = info.tel; cell.detailLabel.text = info.address; return [self calculateHeightForCell:cell]; } - (CGFloat)calculateHeightForCell:(UITableViewCell *)sizingCell { sizingCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.mainTableView.bounds), 0.0f); [sizingCell layoutIfNeeded]; CGSize size = [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; return size.height ; }
参照例子中“自定义tableView高度,该例子也实现了通过代码控制Autolayout动画效果”
6.UIScrollview设置约束
在UIScrollview中添加一个view1跟在View中添加view1存在一些不同的地方
比如在view中添加view1 只需要下列约束即可
top=64; leading=50;widht=100;height=100;
比如在UIScrollview中添加view1 只需要下列约束即可
top=64; leading=50;widht=100;height=100; bottom=10; 其中bottom约束的优先级设置为250
为什么会这样呢,因为在UIScrollview中有个属性叫做contentSize,如果此时不设置bottom约束,那么UIScrollview将不知道自己的contentSize重的height有多大。设置优先级为250 是因为。此时view1的高度约束和bottom约束存在冲突,设置优先级为250是表示优先支持高度约束。在我们日常开发中,只需要设置bottom约束,如果用不到该约束,也就不需要管他了
详细参考例子UIScrollview设置