UIScrollVIew中的静态对象

时间:2012-05-26 16:04:36

标签: ios uiscrollview

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

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

2 个答案:

答案 0 :(得分:1)

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

UIView + UIScrollView (your PDFScrollView)
+---------------------------------------+
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-                                       -
-       UIView (not a subview)          -
-       +----------------------+        -
-       -      Label(s)        -        -
-       -                      -        -
-       +----------------------+        -
+---------------------------------------+

答案 1 :(得分:0)

UIScrollViewDelegate中,实施方法:

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

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

你正确计算scaleX,scaleY,X和Y. 您可以尝试对1.0/scrollView.zoomScalescaleX使用scaleY

Ray Wenderlich网站上有一个关于使用UIScrollView查看层次结构的非常好的教程。