2014-03-25 81 views
0

我正在使用自動佈局和自定義視圖來處理我的第一個項目。我的問題是這樣的:帶自定義視圖的Xcode自動佈局

我在界面生成器中創建了我的自定義視圖,然後添加了約束來拉伸視圖,如果需要的話,我按照自己的方式工作,但是,考慮下面的代碼片段從我的自定義視圖類 -

// MyCustomView

-(id)initWithCoder:(NSCoder*)decoder 
{ 
    self = [super initWithCoder:decoder]; 
    if(self != nil) 
    { 
     CGFloat layerWidth = self.bounds.size.width; 
       CGFloat layerHeight = self.bounds.size.height; 
    } 
    return self; 
} 

此代碼返回的大小設置IB。我的繪圖代碼依賴於新的寬度和高度(如果視圖已被拉伸),但我不知道如何檢索它們。

回答

1

首先,該代碼是非常愚蠢的,因爲你正在創建變量layerWidthlayerHeight並將它們扔掉,這是毫無意義的。

二,self.bounds.size始終是視圖的寬度和高度。然而,在initWithCoder:中詢問這個問題是毫無意義的,正如您已經正確看到的那樣,在視圖放入界面之前很久就會發生這種情況,而在自動佈局發生之前甚至更長時間纔會調整它的大小。如果您的繪圖代碼依賴邊界大小,則在繪製時檢索邊界大小。如果您需要再次繪製,因爲視圖已更改大小,並且如果這不是全部單獨發生,則執行layoutSubviews以告訴視圖需要再次繪製該視圖。

+0

我只是想通了。感謝您的快速回復! – user3457894