UIViewAutoresizing是一个枚举类型,默认是UIViewAutoresizingNone,也就是不做任何处理。
各属性解释:
使用Storyboard/Xib和代码设置autoresizing,它们是相反的。
autoresizing组合使用:
也就是枚举中的值可以使用|隔开,同时拥有多个值的功能,可以针对不同的场景作不同的变化。例如:
意思是:view的宽度按照父视图的宽度比例进行缩放,距离父视图顶部距离不变。
注意:
1)view的autoresizesSubviews属性为yes时(默认为yes),autoresizing才会生效。 2)从XCODE6开始,Storyboard&Xib默认是自动布局,因此我们需要手动调整,才能使用autoresizing。 具体操作如图(打开Storyboard文件,你就会看到下面图的界面):
AutoResizing缺陷:
一个父视图上有多个子视图时,需要给子视图添加某种关系的时候 如 等间隙 等宽 等高 这些不能实现
/**
代码设置
Autoresizing*/
self . MyView . autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth ; |
黄色警告:添加的约束和实际显示不一样
红色警告:约束加少了或者约束冲突了
代码添加约束1:(了解即可)
|
VFL添加约束2:
//VFL
语法总结:
//
(
1
)
“H”
表示水平方向,
“V”
表示垂直方向
// ( 2 ) “|” 表示父视图的边界 // ( 3 ) “[]” 表示这是一个视图 UIView 的子类,可以组合多个条件,条件用 "()", 多个条件用逗号隔开 [view(>=100,<200)]
//
(
4
)
“@”
表示优先级
功能 表达式 水平方向 H: 垂直方向 V: Views [view] SuperView | 关系 >=,==,<= 空间,间隙 - 优先级 @value |
UIView
*MyView1 = [[
UIView
alloc
]
init
];
MyView1.
backgroundColor
= [
UIColor
orangeColor
];
[self.viewaddSubview: MyView1];
//
关闭Autoresizing
[MyView1
setTranslatesAutoresizingMaskIntoConstraints
:
NO
];
UIView *MyView2 = [[ UIView alloc ] init ]; MyView2. backgroundColor = [ UIColor blueColor ];
[self.viewaddSubview: MyView2];
//
关闭Autoresizing
[MyView2
setTranslatesAutoresizingMaskIntoConstraints
:
NO
];
UIButton
*btn = [
UIButton
buttonWithType
:
UIButtonTypeCustom
];
[ self . view addSubview :btn];
[btn setBackgroundColor:[UIColor redColor]];
//
关闭Autoresizing
[btn
setTranslatesAutoresizingMaskIntoConstraints
:
NO
];
[btn setTitle : @" 上一页 " forState : UIControlStateNormal ]; [btn addTarget : self action : @selector (btnAction) forControlEvents : UIControlEventTouchUpInside ];
//
添加横向的约束
NSArray
*arr1 = [
NSLayoutConstraint
constraintsWithVisualFormat : @"H:|-20-[MyView1]-20-[MyView2(==MyView1)]-20-|" options : 0 metrics : nil views : NSDictionaryOfVariableBindings (MyView1, MyView2)]; NSArray *arr2 = [ NSLayoutConstraint constraintsWithVisualFormat : @"H:|-20-[btn]-20-|" options : 0 metrics : nil views : NSDictionaryOfVariableBindings (btn)];
//
添加垂直约束
NSArray
*arr3 = [
NSLayoutConstraint
constraintsWithVisualFormat : @"V:|-40-[MyView1]-20-[btn(==MyView1)]-20-|" options : 0 metrics : nil views : NSDictionaryOfVariableBindings (btn, MyView1)]; NSArray *arr4 = [ NSLayoutConstraint constraintsWithVisualFormat : @"V:|-40-[MyView2]-20-[btn(==MyView1)]-20-|" options : 0 metrics : nil views : NSDictionaryOfVariableBindings (MyView2, btn, MyView1)];
//创建可变数组将两个约束加入数组
NSMutableArray
*arrM = [
NSMutableArray
arrayWithArray
:arr1];
[arrM addObjectsFromArray :arr2]; [arrM addObjectsFromArray :arr3]; [arrM addObjectsFromArray :arr4];
//将约束添加到self.view
[
self
.
view
addConstraints
:arrM];
|