2016-01-28 39 views
1

我有一個具有一定外觀的自定義UIView。我想要它,所以如果UIView的寬度由於代碼設置自動佈局寬度約束而發生變化,我想通過相應地改變外觀來對變化做出反應 - 其中一個例子是設置拐角半徑。如何對UIView上自動佈局約束引起的大小變化做出反應?

我的自定義UIView如何對由UIView上的自動佈局約束引起的大小更改做出反應?

+1

你能在[layoutSubviews]更新它們(https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instm/UIView的/ layoutSubviews)? –

回答

4

覆蓋layoutSubviews

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    [self updateCornerRadius]; 
} 
+0

那很簡單。這是UIView中唯一的方法,當佈局約束被應用到它時被觸發? – Boon

+0

我相信自動佈局發送'setCenter:'和'setBounds:'到視圖來設置它的位置和大小,所以你可以重寫這些,但我建議只是重寫'layoutSubviews'。 –

+0

好吧,還有['drawRect:'](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instm/UIView/drawRect :)它可能發送。但我也建議堅持layoutSubviews。 –