用代码来控制自定义的控件 自动适应横竖屏时的相对位置

主要是通过setAutoresizingMask这个属性来设置;

例如:要一个button按钮始终居中显示

首先始化UIButton *btn的坐标位置(如果你想自适应,要使用相对坐标来设置btn的frame;这样开始时不管是横屏还是竖屏,获取的屏幕宽度都是当前屏幕的宽度,后面自适应属性才会正确)

btn.frame = CGRectMake(self.frame.size.width/2-20, 0, 40,30)];//btn在屏幕中间;

      [btn setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;//使其左右宽度都自适应即居中

     其效果和用IB设置的一样。



参考:例如下面的代码设置和下面图片中在IB中设置的效果是一样的:

[btn setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin];

ios的AutoresizingMask属性

[cpp]  view plain copy
  1. 在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高。  
  2. enum {  
  3.    UIViewAutoresizingNone                 = 0,  
  4.    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,  
  5.    UIViewAutoresizingFlexibleWidth        = 1 << 1,  
  6.    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,  
  7.    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,  
  8.    UIViewAutoresizingFlexibleHeight       = 1 << 4,  
  9.    UIViewAutoresizingFlexibleBottomMargin = 1 << 5  
  10. };  
  11. typedef NSUInteger UIViewAutoresizing;  
  12.    
  13. 分别解释以上意思。  
  14. UIViewAutoresizingNone就是不自动调整。  
  15. UIViewAutoresizingFlexibleLeftMargin就是自动调整与superView左边的距离,也就是说,与superView右边的距离不变。  
  16. UIViewAutoresizingFlexibleRightMargin就是自动调整与superView的右边距离,也就是说,与superView左边的距离不变。  
  17. UIViewAutoresizingFlexibleTopMargin   
  18. UIViewAutoresizingFlexibleBottomMargin  
  19. UIViewAutoresizingFlexibleWidth  
  20. UIViewAutoresizingFlexibleHeight  
  21. 以上就不多解释了,参照上面的。  
  22. 也可以多个枚举同时设置。如下:  
  23. subView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin  |UIViewAutoresizingFlexibleRightMargin;  
  24. 如果有多个,就用“|”关联。  
  25. 还有一个属性就是autoresizesSubviews,此属性的意思就是,是否可以让其subviews自动进行调整,默认状态是YES,就是允许,如果设置成NO,那么subView的autoresizingMask属性失效。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值