2012-02-17 49 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