我的视图顶部有一个表视图,表视图下方有一个滚动视图。
当我按下调整大小栏按钮项时,我想隐藏表视图并最大化滚动视图。我得到了滚动视图和表视图以正确设置动画,但我正在尝试调整滚动视图中的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。我该如何解决这个问题?
答案 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;
这将在超视图的坐标空间中为您提供视图的矩形,包括实际原点。