我的iOS应用程序的一部分涉及PDF阅读器。为了显示用户所在的页面,我创建了一个UILabel并将其放在PDFScrollView(UIScrollView的子类)中。此标签必须位于滚动视图中,因为每当我更改页面时,滚动视图都会向标签的IBOutlet发送一条消息,告诉它更改其文本。
但是,每当我在UIScrollView中放大(滚动“滚出”)时,标签也会缩小(其大小不会改变,但会向外移动)。这导致它最终离开屏幕。 如何更改它以使UILabel在UIScrollView中静止且不动?
答案 0 :(得分:1)
不是对UIScrollView
进行子类化,而是将UIView
作为子类,并将UIScrollView
和UIView
作为子视图,而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.zoomScale
和scaleX
使用scaleY
。
在Ray Wenderlich网站上有一个关于使用UIScrollView
查看层次结构的非常好的教程。