【问题标题】:Change custom UIView to UIScrollView将自定义 UIView 更改为 UIScrollView
【发布时间】:2012-07-15 13:42:27
【问题描述】:

一般来说: 我得到了一个带有 xib 文件的自定义 UIView 作为 UIViewController 上的子视图。我在控制器中以编程方式添加子视图。

在我的 UIViewController 中:

NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"MyCustomSubView" owner:self  options:nil];
mySubView = [subviewArray objectAtIndex:0];
...
[self.view addSubview:mapView];

因为我需要在这个子视图上滚动,它上面也有一个 UIImageView,所以我决定将我的自定义 UIView 更改为 UIScrollView。

我做了以下步骤:

  • 更改了 MyCustomSubView.xib,添加了一个带有自定义类 MyCustomSubView 的 UIScrollView(和之前一样的 UIImageView)
  • 更改了我的 MyCustomSubView 类以扩展 UIScrollView
  • 更改了我的 MyViewController 以实现 UIScrollViewDelegate
  • 将 mySubView.delegate 设置为 self(控制器)
  • 实现了(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView,返回子视图的UIImageView
  • 在 imageview 和 uiscrollview 上启用用户交互

这些是我认为的总步数。但作为示例,未调用 viewForZoomingInScrollView 方法。我也尝试放大,但没有任何反应。

任何人的想法,可能是错的?

【问题讨论】:

    标签: ios uiscrollview uiimageview xib custom-view


    【解决方案1】:

    简单查看UIScrollView Class Reference page,我看到以下内容:

    UIScrollView 类可以有一个必须采用 UIScrollViewDelegate 协议的委托。要使缩放和平移工作,代理必须同时实现 viewForZoomingInScrollView: 和 scrollViewDidEndZooming:withView:atScale:;另外,最大(maximumZoomScale)和最小(minimumZoomScale)缩放比例必须不同。

    您提到了实现viewForZoomingInScrollView:,但没有提到scrollViewDidEndZooming:atScale:,也没有提到设置maximumZoomScaleminimumZoomScale。尝试执行这些操作,然后再检查是否仍有问题。

    【讨论】:

    • 非常感谢。我之前阅读了类参考,但是在您回答之后,我再次查看了我的代码,现在发现立即有点失败,因为我实现了 scrollViewDidEndZooming 错误。我花了 1 个小时来解决这个问题,而在你回答之后,我只有 1 分钟。谢谢!
    • 发生在我们最好的人身上。很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    相关资源
    最近更新 更多