2016-04-19 22 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的更新版本将焦点更多地转移到查看控制器和远离视图。

相关问题