Ios UIScrollVIew中的静态对象
我的iOS应用程序的一部分包括一个PDF阅读器。为了显示用户所在的页面,我创建了一个UILabel并将其放置在PDFScrollView(UIScrollView的子类)中。此标签必须位于滚动视图中,因为每当我更改页面时,滚动视图都会向标签的IBOutlet发送一条消息,告诉它更改其文本Ios UIScrollVIew中的静态对象,ios,uiscrollview,Ios,Uiscrollview,我的iOS应用程序的一部分包括一个PDF阅读器。为了显示用户所在的页面,我创建了一个UILabel并将其放置在PDFScrollView(UIScrollView的子类)中。此标签必须位于滚动视图中,因为每当我更改页面时,滚动视图都会向标签的IBOutlet发送一条消息,告诉它更改其文本 但是,每当我在UIScrollView中放大(滚动“out”)时,标签也会缩小(其大小不会改变,但会向外移动)。这导致它最终离开屏幕如何更改它,使UILabel在UIScrollView中是静态且不移动的?而不
但是,每当我在UIScrollView中放大(滚动“out”)时,标签也会缩小(其大小不会改变,但会向外移动)。这导致它最终离开屏幕如何更改它,使UILabel在UIScrollView中是静态且不移动的?而不是子类化
UIScrollView
,子类化aUIView
并将UIScrollView
和UIView
作为子视图放置,而UIView
不是滚动视图的子视图。将标签等放置在ui视图中
并让父视图管理滚动视图和其他视图之间的通信
UIView + UIScrollView (your PDFScrollView)
+---------------------------------------+
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- UIView (not a subview) -
- +----------------------+ -
- - Label(s) - -
- - - -
- +----------------------+ -
+---------------------------------------+
在
UIScrollViewDelegate
中,实现以下方法:
- (void)scrollViewDidZoom:(UIScrollView*)scrollView {
uiLabel.transform = CGAffineTransformMakeScale(scaleX, scaleY);
uiLabel.center = CGPointMake(x, y);
}
在这里可以正确计算scaleX、scaleY、X和Y。
您可以尝试对scaleX
和scaleY
使用1.0/scrollView.zoomScale
关于在站点上使用视图层次结构的
UIScrollView
有一个非常好的教程。我可以在UIView中使用我的所有标签执行ViewController->UIView->UIScrollView吗?我添加了一个视觉来解释我的意思。所以UILabel应该是ScrollView子视图的子视图吗?不,UILabel
应该是UIView
的子视图,它“浮动”在UIScrollView
上(不是子视图,否则它也会滚动)。这两个视图是一个大的UIView
的子视图。您是说ViewController的默认UIView?这并不能解决问题。仍然存在编译问题,或者只是UILabel保持缩放?尝试对scaleX和scaleY使用1.0。UILabel会保持缩放。我试了1.0,但都没用。不,也不行