0

我有一个视图,顶部有一个表格视图,表格视图下方有一个滚动视图。当我按下调整大小栏按钮项时,我想隐藏表格视图并最大化滚动视图。我让滚动视图和表格视图正确设置动画,但我正在尝试调整UITextView滚动视图内部的大小以利用额外的屏幕空间。

每当我计算调整大小时,UITextView都会转到屏幕的左上角,我不知道为什么。我什至没有修改 X 和 Y,只是高度。

CGRect newDesFrame = descriptionTextView.bounds;
newDesFrame.size.height = newDesFrame.size.height + tableViewFrame.size.height;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.5];

self.scrollView.frame = scrollFrame;
self.descriptionTextView.frame = newDesFrame;

[UIView commitAnimations];

我不确定为什么会这样。因为它在里面,所以descriptionTextView.bounds会搞砸吗?似乎,当我对滚动视图的 X 和 Y 进行 NSLog 时,它是 0,0。这很奇怪,因为它不在超级视图或视图中的 0,0 处。我该如何解决?UIViewUIScrollView

4

2 回答 2

1

发生这种情况是因为您正在执行 self.descriptionTextView.frame=newDesFrame (这是 Bounds 属性,而不是框架!要了解差异链接

解决方案:

self.descriptionTextView.bounds=newDesFrame

于 2012-12-07T20:18:48.050 回答
1

descriptionTextView 最有可能跳到左上角,因为实际上您正在更改原点(x 和 y)。你开始:

CGRect newDesFrame = descriptionTextView.bounds;

获取该文本视图的边界将为您提供一个原点为 0,0 的 CGRect,因为“边界”为您提供了视图在其自己的局部坐标空间中的矩形。

试试这个:

CGRect newDesFrame = descriptionTextView.frame;

这将在其父视图的坐标空间中为您提供视图的矩形,包括实际原点。

于 2012-12-07T20:20:10.143 回答