ios中怎样控制uibaritem控件的位置

ios中怎样控制uibaritem控件的位置,第1张

可以在Bar Button Item后面填个Fixed Space Bar Button Item 或者Flexible Space Bar Button Item,然后再在后面加上下一个Bar Button Item

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

}

就是这三步,感谢那位分享方法的大神,解决我一个大问题


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11417307.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存