下面是我的屏幕设计。
。
我想要Zoom in/out in **mainView**. mainView Width & Height is 300.
放大/缩小,我已经实现了以下方法,并且可以正常使用。
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return mainView;
}
一切都很好。我已scroll.minimumZoomScale=1
和scroll.maximumZoomScale=5
。
在放大时间mainView Frame increase depend on **scrollView.zoomScale**
,我已经检查- (void)scrollViewDidZoom:(UIScrollView *)scrollView
了这种方法。
在放大时间
**if i get scrollView.zoomScale=2 than mainView Width & height become 600
if i get scrollView.zoomScale=3 than mainView Width & height become 900**
在此过程中,innerView
由于具有autoresize属性,因此调整大小。但是innerView的Width和Height为100(在放大/缩小时不变)。
我们可以根据规模更改它吗?
最后,我想要什么,只要innerView
和lblTest
框架的变化,比我想增加/减少numberOfLine
的lblTest
在zoom in/out
时间。
我尝试手动添加innerView
&lblTest
,但遇到的问题是其宽度和高度的增加幅度大于其superview(mainView)。
非常感谢,如果有什么知道如何存档。
提前致谢。
在滚动视图中缩放时,zoomView
(mainView
根据您的情况)不会调整大小,只是对其图层(CALayer
)进行仿射变换。例如在1.2 zoomScale的情况下是:[1.2, 0, 0, 1.2, 0, 0]
。因此它的范围不会改变-只是所有内容都按比例放大/缩小,它也会影响它的frame
属性-所包含的内部视图也不会改变,并且标签也会被调整大小,渲染mainView时只是按比例放大/缩小,这就是为什么框架不受影响。
只需- (void)scrollViewDidZoom:(UIScrollView *)scrollView
在委托中实施并打印出主视图frame, bounds, layer.affineTransform
即可查看缩放发生的情况。
要制作您想要的东西,您必须根据以下内容调整标签zoomScale
:
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
float zoomScale = scrollView.zoomScale;
self.label.bounds = CGRectMake(0, 0, 100*zoomScale, 100*zoomScale); // supposing that label's original size is {100, 100}
self.label.layer.affineTransform = CGAffineTransformMakeScale(1.0/zoomScale, 1.0/zoomScale);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句