【问题标题】:In photoscroller app (iPhone WWDC-104 Photos App) uiscrollview images shift to right when called using presentModalviewController在 photoscroller 应用程序(iPhone WWDC-104 照片应用程序)中,使用 presentModalviewController 调用时,uiscrollview 图像向右移动
【发布时间】:2011-04-20 17:59:59
【问题描述】:

我看过 WWDC-104 视频,其中显示了 UIScrollView 的照片。 我也下载了示例代码。 在我的应用中,结构如下,

(根类)A类---> B类-----------> PhotoViewController(包含ScrollView)

我正在使用 Class B 中的 presentModalViewController 方法调用 PhotoViewController 类。

但每次滑动时,新图像都会在视图上向右移动。 在图像左侧可以看到一条黑色垂直条带,每次滑动都会变宽。 因此,在 6 到 8 张图像之后,视图变得全黑。

我还没有编写任何其他代码。刚刚复制了课程。

为什么当 PhotoViewController 类不是第一个要加载的类时会发生这种情况? 是否需要为 ScrollView 设置任何属性? 这个view Hierarchy有什么错误吗?

还有如何从特定图像开始(从第 10 张图像加载)?

任何帮助/建议将不胜感激。

编辑:

第一次水平滑动后,

第二次水平滑动后,

【问题讨论】:

  • 我最近在处理这个代码,所以我可以回答你。我不确定你的问题。你在你的应用程序中加载 PhotoViewController 类,当你刷到另一个图像时,你有一个黑条?你能给我们看一张图片吗^^?
  • 您好,我已添加图片。问题是当 PhotoViewController 不是第一个类时,第一个图像加载正确。滑动第二张图像后,它的 X 坐标似乎发生了移动。对于第三幅图像,X 坐标进一步移动。但是我没有更改代码中的任何内容,并且当 PhotoViewController 加载第一类时,相同的代码效果很好。可能是什么问题?

标签: iphone uiscrollview paging presentmodalviewcontroller wwdc


【解决方案1】:

听起来您可能没有考虑图像间的边距。您是否还复制了他们的资源文件?如果我没记错的话,他们的滚动视图将“页面外”扩展了一点,以便在图像之间留出空白。

【讨论】:

  • 是的..图像之间有边距,但它是以编程方式完成的,并且代码在那里。问题是当我的第一个类是 PhotoViewController 时,同一个应用程序运行完美,但是当我从其他按钮单击调用它时,就会出现此问题。
【解决方案2】:

当您在应用程序中使用时,您的 PhotoViewController 不是由 UINavigationController 推送的吗?

这就是问题所在,NavigationController 修改了 ScrollView 的框架,PhotoViewController 创建的偏移量和扩展宽度在视图出现后不再存在。

解决此问题的最简单方法是将 PhotoViewController 的视图设置为常规 UIView,并将 ScrollView 添加为此 UIView 的子视图。然后 NavigationController 会修改这个视图的框架,但不会触及子视图。

UIView * intermediateView = [[UIView alloc] initWithFrame:pagingScrollViewFrame];
[intermediateView addSubview:pagingScrollView];
self.view = intermediateView;

查看这个问题了解更多信息: Photos app-like gap between pages in UIScrollView with pagingEnabled

【讨论】:

  • 而不是使用 addSubview 推送控制器解决了这个问题。但是我现在无法检测到 UITouch 事件..
猜你喜欢
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多