2016-04-19 106 views
0

我目前正在使用UITextView調試我們的應用程序中的一個問題,將其最後幾行切斷。 UITextView位於collectionView單元格的內部,該單元格允許自己摺疊。我試圖在其框架更改時捕獲文本隱藏的執行,所以我在-[UITextView setFrame:]上設置了一個符號斷點,並且在設置collectionView期間,這會暫停很多次,如預期的那樣。如何在不調用setFrame的情況下改變其框架

然而,當我打的最小化按鈕,TextView的的框架以某種方式改變它的起源和高度,但我從來沒有得到一個呼叫setFrame:(或至少我的斷點從來沒有被擊中。)我也從來沒有得到一個電話setFrame:當我展開它時,當原點和高度再次發生變化時。

我調用的直接操作textView的唯一代碼是隱藏和取消隱藏它。隱藏後,我再撥打以下:

- (void)updateCollection { 
[self.collection performBatchUpdates:nil completion:nil]; 
[self.amountCell updateTable]; 
[self.collection setNeedsLayout]; 
[self.collection layoutIfNeeded]; 
} 

amountCell無關我處理的細胞,所以我不認爲這有什麼與此有關。不知何故,在隱藏UITextView然後在collectionView上調用一些更新方法之間,框架更改時未實際調用setFrame:。這怎麼可能?該框架如何被操縱?我在這裏錯過了很明顯的東西嗎你可能看

+1

是否調用'setBounds:'或'setCenter:'? – dan

+0

完美!根本沒有想到'setBounds:'。出於某種原因,我認爲最終會調用'setFrame:'。現在,如果我可以找出爲什麼這樣設置我的界限如此怪異....順便說一句,如果您添加您的評論作爲答案,我會接受它,當我被允許。 –

回答

1

一個地方是在收集視圖的-layoutSubviews方法,這將是無論何時確定佈局需要更新的框架,你所暗示的是,當你調用-setNeedsLayout-layoutIfNeeded它被調用。這是一個經常被忽視的「隱藏」影響者,尤其是隨着iOS的更新版本將焦點更多地轉移到查看控制器和遠離視圖。

相關問題