0

我的 iOS 应用程序的一部分涉及 PDF 阅读器。为了显示用户所在的页面,我创建了一个 UILabel 并将其放置在 PDFScrollView(UIScrollView 的子类)中。这个标签必须在滚动视图中,因为每当我更改页面时,滚动视图都会向标签的 IBOutlet 发送一条消息,告诉它更改其文本。

但是,每当我在 UIScrollView 中放大(滚动“缩小”)时,标签也会缩小(它的大小不会改变,但会向外移动)。这会导致它最终移出屏幕。如何更改它以使 UILabel 在 UIScrollView 中是静态且不动的?

4

2 回答 2

1

而不是子类化UIScrollView,子类 aUIView并将 aUIScrollViewUIView作为子视图而UIView不是滚动视图的子视图。将您的标签等放在里面,UIView并让父视图管理滚动视图和其他视图之间的通信。

UIView + UIScrollView (your PDFScrollView)
+---------------------------------------+
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-       UIView (not a subview)          -
-       +----------------------+        -
-       -      Label(s)        -        -
-       -                      -        -
-       +----------------------+        -
+---------------------------------------+
于 2012-05-26T16:09:25.253 回答
0

在你的UIScrollViewDelegate,实现方法:

- (void)scrollViewDidZoom:(UIScrollView*)scrollView {

    uiLabel.transform = CGAffineTransformMakeScale(scaleX, scaleY);
    uiLabel.center = CGPointMake(x, y);
}

您可以在其中正确计算 scaleX、scaleY、X 和 Y。您可以尝试1.0/scrollView.zoomScale同时使用scaleXscaleY

Ray Wenderlich网站上有一个很好的关于使用UIScrollView视图层次结构的教程。

于 2012-05-26T16:14:58.817 回答