Iphone 调整UIView的大小-展开顶部

Iphone 调整UIView的大小-展开顶部,iphone,cocoa-touch,Iphone,Cocoa Touch,我想调整UIScrollView中的UIView的大小 我可以通过以下方式轻松增加高度: CGRect frame = self.drawinView.frame; frame.size.height += 100; self.drawinView.frame = frame; self.drawinScrollView.contentSize = CGSizeMake(frame.size.width, frame.size.height); 一切都很好 上面的代码将在视图底部创建一个新的视

我想调整UIScrollView中的UIView的大小

我可以通过以下方式轻松增加高度:

CGRect frame = self.drawinView.frame;
frame.size.height += 100;
self.drawinView.frame = frame;
self.drawinScrollView.contentSize = CGSizeMake(frame.size.width, frame.size.height);
一切都很好

上面的代码将在视图底部创建一个新的视图区域,我可以填写该区域

现在,当我调整视图的大小时,我只想重新绘制刚刚创建的视图的新部分。我不想重新粉刷整个视图

然而!当我需要展开视图的顶部时,我遇到了困难

做:

CGRect frame = self.drawinView.frame;
frame.origin.y -= 100;
self.drawinView.frame = frame;
self.drawinScrollView.contentSize = CGSizeMake(500, 600);
不起作用。


如何在不重新绘制整个视图的情况下执行此操作?

在上述代码中,您只需更改视图的原点。不是它的大小。

您可以将内容大小设置为您想要的任何大的数字,但您不能在0,0处向左或向上滚动超过左上角。如果您有一个y为-100的视图,它将不允许您滚动到高于0的100px

相反,您需要将其保留在原来的位置,而是将
contentOffset
垂直设置为+100

例如,如果要将视图的大小调整为100px以上,可以执行以下操作:

CGRect frame = self.drawinView.frame;
frame.size.height += 100;
self.drawinView.frame = frame;
self.drawinScrollView.contentSize = CGSizeMake(frame.size.width, frame.size.height);
self.drawinScrollView.contentOffset = CGPointMake(0,100);

您可能需要手动告诉
drawinView
您希望将内容锁定到视图的底部而不是顶部。

我也可以更改其大小:frame.size.height+=100;这是行不通的。它还在视图的底部添加了一个区域。好的,这很有意义。。我怀疑告诉drawinView将内容锁定到底部会涉及到让它重新绘制整个画布?我希望避免这种情况。。你能想出另一种方法吗?我不确定以下任何一个:UIView类的contentMode属性。如果您将其设置为UIViewContentModeBottom,那么当您调整视图大小时,它应该自动调用repaint,并且它可能只传递顶部显示区域的脏矩形。如果没有,则始终可以仅绘制该区域,而不在绘制之前清除上下文。(view.clearsContextBeforeDrawing=false)好的,我没有试过。。我接受你刚才回答的那一点,那就是你不能设置数字!我所做的只是计算出在整个场景中需要的最大画布大小,然后手动限制滚动。。它提供了同样的效果,可能使它有点快!当我有时间时,我会研究这个内容模式。谢谢你的帮助!8^)