我有一個自定義的UIView fooView
,在那裏我已經覆蓋了drawRect
方法,用initWithFrame
方法。如何/手動更改自定義UIView的框架?
我也有一個自定義的UIView barView
它保存幷包含fooView
。
barView
應該從fooView
得到它的高度,因爲fooView
正在繪製自定義的東西。
我的問題是我每次檢查fooView
的frame
或bounds
屬性,它仍然是一樣的。儘管我可以清楚地看到它超出了initWithFrame
規定的初始高度。
這使我相信,也許因爲我已經重寫了drawRect
方法,現在我有責任更新fooView
的框架。
我應該這樣做? 我該怎麼做? 最佳做法是什麼?
編輯:添加的代碼
- (id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) [self setupWithMessage:nil];
return self;
}
setupWithMessage
只是計算,以適應在約束寬度所需的文本的尺寸(主要是高度)。
- (void)drawRect:(CGRect)rect{
[super drawRect:rect];
// a whole bunch of drawing logic, but basically draws a message bubble
// based on the size of the text (The text dynamically changes), and then
// draws the text so if there is a lot of text, the calculated height of
// what it takes to draw the text can easily be larger than the size
// originally passed in during initialization
}
你能否提供一些代碼? 例如您的drawRect:和initWithFrame:方法實現 –
@YuriRomanchenko我會把它現在 – vvMINOvv
即使你是畫fooView'的框架'外,其寬度和高度沒有更新,但內容外'fooView'的框架仍然可見,假設你沒有在'barView'上設置'clipsToBounds'。 – bobnoble