Fixed Space Bar Button Item 可以你去定义它要多宽
Flexible Space Bar Button Item 可以视图自己调整位置
不知道你是不是要这个。。。
以前做android的时候已经觉得布局方便的不行,几种简单的布局容器,再加上停靠和weight,基本所有需求都能满足,后来接触ios开发,一开始还担心自动布局复杂,学习成本高。接触几天后发现,一旦找到窍门,在布局的自由度上更胜android一筹,简直就是想怎么玩就怎么玩。
一:总
自动布局的核心用一句话表示就是:通过各种方法“确定”控件的位置和大小。这里的各种方法就是约束。
二:约束
(1)位置类约束
以上约束来举例,可以设置本控件的上边距离其它控件位置点(位置点包括:上下左右和中间)的距离。这里的距离是一个等式,可以通过这样的方式来理解:y=ax+b;y是最后设置的效果距离值,x是其他控件位置点的距离值,至于a,b都是你可以设置的参数值。使用时,本控件的位置点可以按需自由的参照其他控件的位置点来设置约束。比如,本控件的水平中间点可以等于父容器控件的水平中间点,这样就实现了水平居中。
(2)大小类约束
印象中就三个:宽,高,宽高比
三:最后
位置类约束和大小约束没必要都使用上,只要现有约束已经确定大小和位置了就没必要加冗余约束,会引起冲突。比如,你设置了一个控件的上下左右约束,这时候不仅位置,大小也都确定了。还有文字类的控件(UILabel类),本身就自带大小,所以可以不指定宽高。
待补充。。
在网上找的例子,感觉很实用,留着用
是用storyboard对控件加的约束,然后控件与视图底边距离的约束与.h或.m关联
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *ceshi
在viewDidLoad中注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardComeout:) name:UIKeyboardWillShowNotification object:nil]
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardComeout:) name:UIKeyboardWillHideNotification object:nil]
键盘d出消失时设置控件的frame
-(void)keyboardComeout:(NSNotification *)notification
{
NSDictionary * userInfo = notification.userInfo
CGRect frameOfKeyboard = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]
CGRect frame = self.view.frame
CGFloat height = frame.size.height - frameOfKeyboard.origin.y
self.ceshi.constant = height
}
就是这三步,感谢那位分享方法的大神,解决我一个大问题
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)