【问题标题】:how to reset the view position to origin after scale缩放后如何将视图位置重置为原点
【发布时间】:2013-05-02 11:06:27
【问题描述】:

我的应用中有两个视图,viewA(绿色)和 subviewB(红色)。我的应用程序的初始状态如下:

我用下面的代码来改变viewA的变换:

CGFloat scale = 0.4;
self.viewA.layer.sublayerTransform = CATransform3DMakeScale(scale, scale, 1);

结果,subviewB 被缩放和平移

但是我的应用程序有一个问题:我需要 subViewB 仍然在 viewA 的左上角,但是 subviewB 看起来移动到 viewA 的中心,很奇怪 subviewB 的原点仍然是 (0, 0),如何将subviewB移动到左上角?

【问题讨论】:

  • 你必须使用 CATransform3DMakeScale 吗?如果没有,那么试试这个:self.viewA.transition = CGAffineTransformMakeScale(scale, scale);
  • 你的意思是self.viewA.transform?我必须缩放 viewA 的子视图,但不应该缩放 viewA。即使我可以缩放 viewA,但 viewA 的位置在使用 CGAffineTransformMakeScale 缩放后仍然会发生变化
  • 试图找到解决方案,但动画无法运行.. :(

标签: ios cocoa-touch ios5 ios6


【解决方案1】:

只需尝试给出的代码,

subviewB.transform = CGAffineTransformScale(test.transform, scale, scale);

它会起作用的:)

【讨论】:

    【解决方案2】:

    我在缩放和自动布局方面遇到了同样的问题,但在 uiscrollview 中。最后我使用 CATransform3DMakeScale 解决了我的所有问题。

    https://github.com/hansdesmedt/AutoLayout-scrollview-scale

    这是一个 UIScrollView 的示例,它具有完全在 AutoLayout 中制作的自定义分页,并且可以通过长按和点击进行缩放 (CATransform3DMakeScale) 进行缩放。兼容 iOS 6 和 7。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-12
      • 2014-03-15
      • 2022-01-11
      • 1970-01-01
      • 2014-11-03
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多