ios - 在 scrollViewDidZoom 中调整所有 subview 的大小

标签 ios iphone uiview uiscrollview zooming

下面是我的屏幕设计。

enter image description here .

我要Zoom in/out in **mainView**. mainView Width & Height is 300.要放大/缩小,我已经实现了以下方法,并且可以正常工作。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return mainView;
}

一切都很好。我设置了scroll.minimumZoomScale=1scroll.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 的宽度和高度为 100(在放大/缩小时不会改变)。

我们可以根据规模改变这个吗?

最后我想要什么每当innerView & lblTest框架变化比我想增加/减少 numberOfLinelblTestzoom in/out时间。

我已尝试添加 innerView & lblTest手动但得到它的宽度和高度比它的 super View (主视图)增加更多的问题。

真的很感激如果有人知道如何存档这个。

提前致谢。

最佳答案

当您放大 ScrollView 时,zoomView ( mainView 在你的情况下)没有调整大小,只是应用在它的图层上的仿射变换( CALayer )。例如,对于 1.2 zoomScale,它是:[1.2, 0, 0, 1.2, 0, 0] .
所以它的界限没有改变 - 只是它的所有内容都按比例放大/缩小,它也会影响它的 frame属性 - 所以也不是包含的内部 View ,并且标签将被调整大小,只是在渲染主视图时放大/缩小,这就是它们的框架不受影响的原因。

只需执行- (void)scrollViewDidZoom:(UIScrollView *)scrollView在委托(delegate)中并打印出主视图的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);
}

关于ios - 在 scrollViewDidZoom 中调整所有 subview 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19856928/

相关文章:

ios - UILabel 文本的多种文本颜色在 swift 3.0 中不起作用

iphone - 跟踪 UIButton 上的手指触摸并执行它的操作

iphone - 在 UITableView 中实现 UIScrollViewDelegate 方法

ios - 如何在导航 Controller 导航栏顶部添加图像?

iphone - 在iOS中编码UIView内容

ios - AirPlay图标因iOS版本而异

ios - 如何让我的文本框在 iOS 中消失?

ios - 如何使用 Swift 在 iOS 应用程序上存储持久数据?

iphone - 如何在sqlite iphone应用程序中使用事务

objective-c - UIBezierPath - 动画填充