博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ios的AutoresizingMask

Posted on 2012-02-29 23:14  星尘的天空  阅读(4017)  评论(1编辑  收藏  举报

链接地址:http://hi.baidu.com/friendofsnowandsea/blog/item/6ee1f5d8a37d01f639012fdf.html

 

在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高。

enum {
   UIViewAutoresizingNone                 = 0,
   UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
   UIViewAutoresizingFlexibleWidth        = 1 << 1,
   UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
   UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
   UIViewAutoresizingFlexibleHeight       = 1 << 4,
   UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;

 

分别解释以上意思。

UIViewAutoresizingNone就是不自动调整。

UIViewAutoresizingFlexibleLeftMargin就是自动调整与superView左边的距离,也就是说,与superView右边的距离不变。

UIViewAutoresizingFlexibleRightMargin就是自动调整与superView的右边距离,也就是说,与superView左边的距离不变。

UIViewAutoresizingFlexibleTopMargin 

UIViewAutoresizingFlexibleBottomMargin

UIViewAutoresizingFlexibleWidth

UIViewAutoresizingFlexibleHeight

以上就不多解释了,参照上面的。

也可以多个枚举同时设置。如下:

subView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin  |UIViewAutoresizingFlexibleRightMargin;

如果有多个,就用“|”关联。

还有一个属性就是autoresizesSubviews,此属性的意思就是,是否可以让其subviews自动进行调整,默认状态是YES,就是允许,如果设置成NO,那么subView的autoresizingMask属性失效。

 

关于ios的控件的AutoresizingMask属性  

setAutoresizingMask控件的自适应 

    UIViewAutoresizingNone                 = 0,

    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,

    UIViewAutoresizingFlexibleWidth        = 1 << 1,

    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,

    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,

    UIViewAutoresizingFlexibleHeight       = 1 << 4,

    UIViewAutoresizingFlexibleBottomMargin = 1 << 5


UIViewAutoresizingNone


 

UILabel*    label = [[UILabel allocinitWithFrame:CGRectMake(5010020040)];

 

[label setAutoresizingMask: UIViewAutoresizingNone];  控件相对于俯视图坐标值不变   

 

CGRectMake(5010020040)

UIViewAutoresizingFlexibleWidth:控件的宽度随着父视图的宽度按比例改变    例如

label宽度为 100     屏幕的宽度为320          当屏幕宽度为480时      label宽度  变为  100*480/320
同理  
UIViewAutoresizingFlexibleHeight相同


UIViewAutoresizingFlexibleLeftMargin  到屏幕左边的距离随着父视图的宽度按比例改变  

例如    
CGRectMake(5010020040)];   
50     屏幕的宽度为320          当屏幕宽度为480时      label宽度  变为  50*480/320
控件变为    
CGRectMake(75, 10020040)];  

UIViewAutoresizingFlexibleRightMargin
UIViewAutoresizingFlexibleTopMargin
UIViewAutoresizingFlexibleBottomMargin