UITextView没有正确调整大小

时间:2012-12-07 20:11:59

标签: objective-c ios xcode uitextview

我的视图顶部有一个表视图,表视图下方有一个滚动视图。 当我按下调整大小栏按钮项时,我想隐藏表视图并最大化滚动视图。我得到了滚动视图和表视图以正确设置动画,但我正在尝试调整滚动视图中的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是否因为UIView内的UIScrollView而被搞砸了?看来,当我做滚动视图的X和Y的NSLog时,它是0,0。这很奇怪,因为它在superview或视图中不是0,0。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是因为你在做 self.descriptionTextView.frame = newDesFrame(这是Bounds属性,不是帧!!要阅读差异Link

解决方案:

self.descriptionTextView.bounds = newDesFrame

答案 1 :(得分:1)

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

CGRect newDesFrame = descriptionTextView.bounds;

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

请改为尝试:

CGRect newDesFrame = descriptionTextView.frame;

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