【问题标题】:CGAffineTransformScale modified after device rotation设备旋转后修改的 CGAffineTransformScale
【发布时间】:2012-05-18 04:24:16
【问题描述】:

我认为我正在执行转换

originalTransform = self.appContainer.transform;
self.appContainer.transform = CGAffineTransformMakeScale(.8, .8);

如果我不旋转设备,我可以使用以下方法将其恢复为原始状态

self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1);

不幸的是,如果我旋转设备,视图的变换矩阵会被视图旋转修改并破坏原始比例。如果我在旋转后撤消比例,我会留下 UIView 不会恢复到原来的完整大小。

我确定我需要在原始转换矩阵和新转换矩阵之间进行计算,但我不确定如何执行此操作。为了完成这项工作,我唯一能做的就是在旋转之前将比例恢复为 1

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1);
}

然后用新修改后的变换重新缩放

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation               {
    self.appContainer.transform = CGAffineTransformMakeScale(.8, .8);
}

这使它按我的预期工作,但不是回到全屏,然后回到 .8 比例,我希望它从新的转换到正确的 .8 比例。

【问题讨论】:

  • 你终于处理好了吗?我正在寻找解决方案。
  • 我也在寻找解决方案..

标签: iphone ios uiview cgaffinetransform cgaffinetransformscale


【解决方案1】:

如果您想将其还原为原始状态,请尝试将转换设置为 CGAffineTransformIdentity。

self.appContainer.transform = CGAffineTransformIdentity;

【讨论】:

  • 这不起作用,因为设备旋转事件正在修改视图的转换。通过将其设置回身份,我得到了相同的结果。在设备旋转事件之后,视图的转换需要被带到该方向的 0.8 比例。
【解决方案2】:

我认为您必须使用.....删除所有自动调整大小的蒙版

[self.appContainer setAutoresizingMask:UIViewAutoresizingNone];

【讨论】:

    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多