UIScrollView 增加并居中内容

Posted

技术标签:

【中文标题】UIScrollView 增加并居中内容【英文标题】:UIScrollView Increase and center content 【发布时间】:2013-11-26 04:08:23 【问题描述】:

我有以下情况:我有一个UIViewController,里面有一个UIScrollView。此滚动视图的内容是一个“画布”,使用CoreGraphics 在其中绘制内容。此画布最终将显示的图像类似于树结构,所有这些都以编程方式完成。我的问题是:我希望能够增加画布大小,以便旧图像位于新分配的画布大小的中间,然后这个新的画布大小应该是滚动视图内容,以便绘制周围的东西在新分配的边界处并平移。

到目前为止,这是我所拥有的:

在画布类中:

if (totalWidthOccupiedByChildren > totalSpaceAvailableDad) 
    CGSize newSize = CGSizeMake(self.frame.size.width*1.1, self.frame.size.height*1.1);
    self.frame = CGRectMake(0, 0, newSize.width, newSize.height);
    [self.delegate shouldIncreaseScrollView];

在 ViewController 类中:

-(void)shouldIncreaseScrollView
    self.scrollView.contentSize = CGSizeMake(paintV.frame.size.width, paintV.frame.size.height);

这“正常”,画布和滚动视图都增加了,现在允许平移,但旧图像显示在左上角,我需要将其居中。知道怎么做吗?

【问题讨论】:

【参考方案1】:

最终对我有用的是稍微重构我的架构,这样我就有了我需要的变量。但我最终设置的属性是scrollView.contentOffset,仅供参考:)

【讨论】:

【参考方案2】:

你可以做的是,把所有的东西放在一个 UIView 中,然后将该 UIView 添加到 UIScrollView。您需要确保 UIView.center 等于 UIScrollView.center。 此外,您需要调整 UIView 框架大小以及 UIScrollView 大小。

【讨论】:

我设法实现了视图复制,但即便如此scrollView.center = canvasView.center 也没有用,对不起! canvasView 的对齐方式是什么?那应该是中心。 如何对齐 canvasView 正是我的问题.. 但我设法通过设置 contentOffset 来做到这一点

以上是关于UIScrollView 增加并居中内容的主要内容,如果未能解决你的问题,请参考以下文章

在 UIScrollView 中更改内容的居中

居中和滚动 UIScrollView 内容,尺寸更大或更小

以编程方式滑动 UIScrollView

UIScrollview 内容大小不会随着自动布局而增加

UIScrollView 显示为零?

具有自动布局的 iOS UIScrollView 未正确居中