2012-02-17 44 views
2

我有可能有一个非常简单的解决一个奇怪的问题,我看不出它......子视图自动调整大小:调整大小似乎发生,而不是绝对的比例

我有一个包含一个按钮的UIView类作为子视图,跨越宽度的四分之三和视图高度的三分之一。当父视图大小(例如,具有高度和宽度的一半),按钮应该保持它在哪里(父视图的前三分之一),现在也有一半的宽度和新高度仍三分之一。

这意味着:

Parent before: Frame (0,0,100,100) 
Button before: Frame (0,0,80,33.3) 

Parent after: Frame (0,0,50,50) 
Button after: Frame (0,0,40,16.7) 

问题是,按钮后,总是有帧(0,0,30,0)。好像我刚刚通过减去50个像素的变化而获得的按钮的新宽度和高度,而不是按比例调整大小。一定是非常愚蠢的东西,但我无法找到它。

这里是我的UIView类的代码:

-(id)init 
{ 
    self = [super init]; 
    if(self) 
    { 
     self.autoresizesSubviews = true; 

     self.frame = CGRectMake(0,0,100,100); 
     button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     button.frame = CGRectMake(0,0,80, self.frame.size.height/3); 
     button.autoresizingMask = UIViewAutoresizingFlexibleHeight 
            |UIViewAutoresizingFlexibleWidth; 

     [self addSubview:button]; 
    } 

    return self; 
} 

任何人的想法?我已经尝试过的autoresizeMask标志颇有些变化,但无济于事 - 与上面的标志也应该是正确的......

回答

2

这就是你需要做什么:

button.autoresizingMask = UIViewAutoresizingFlexibleHeight | 
          UIViewAutoresizingFlexibleWidth | 
          UIViewAutoresizingFlexibleRightMargin | 
          UIViewAutoresizingFlexibleBottomMargin; 

如果设置灵活的高度和宽度,而不进行灵活的设置页边距,什么,当你调整的情况是,高度和宽度的变化,这样的利润率(即,对上海华的边界的距离)保持不变。

设置高度和下边距要灵活,使上边距保持不变,并认为将会按比例调整上海华。宽度和右边距也一样。

+0

我只是觉得自己现在IB乱搞和代码比较设置后,...这是两者之间居然不一致 - 在IB这是不够的,积极设置两个内部红线,并留下外线灰色,但在autoresizingMask本身必须添加所有的标志 - 什么,我想即使做Left和Top保证金的...但由于反正:-) – TheEye 2012-02-17 14:31:56

+0

它实际上是相当一致的:箱内弹簧等同于'UIViewAutoresizingFlexibleHeight '和'UIViewAutoresizingFlexibleWidth',以及激活所述顶部结构是等同于转动'UIViewAutoresizingFlexibleTopMargin' ** **断开(等其他三个边距)。 – yuji 2012-02-17 14:35:45

+0

一致,如果你知道它:-) – TheEye 2012-02-17 14:51:46