【问题标题】:Why assign value to UIView transform property in sequence?为什么要按顺序为 UIView 转换属性赋值?
【发布时间】:2011-12-27 15:24:06
【问题描述】:

在阅读示例代码时,我发现了一些关于方向更改的代码。有趣的部分是 self.viewtransform 属性是按顺序赋值的。从逻辑上讲,第一个赋值似乎没有任何效果,因为它被后面的赋值覆盖了。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (UIInterfaceOrientationPortrait == toInterfaceOrientation) 
    {
        self.view = portraitView;

        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(0));

        self.view.bounds = CGRectMake(0, 0, 320, 480);
    } else if (UIInterfaceOrientationLandscapeLeft == toInterfaceOrientation) {
        self.view = landscapeView;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));

        self.view.bounds = CGRectMake(0, 0, 480, 320);
    } else {
        self.view = landscapeView;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));

        self.view.bounds = CGRectMake(0, 0, 480, 320);
    }
}

文档说方法 willAnimateRotationToInterfaceOrientation 在方向动画实际发生之前被调用。

那么,对 self.view.transform 的赋值实际上就像将值推入堆栈一样工作?或者 Cocoa Touch 是如何知道视图应该首先设置为 CGAffineTransfrmIndentity 然后设置为另一个值?

【问题讨论】:

  • 我同意,分配单位矩阵的那些行似乎毫无意义。这个示例代码来自哪里?
  • 来自一书的源代码iphonedevbook.com
  • 好吧,他们犯了一个错误。那个会发生。我会向他们报告,以便他们纠正。没什么大不了的。

标签: iphone ios view transform


【解决方案1】:

好吧,身份转换本身不会做任何事情。所以这里的双重分配是没有意义的。

顺便说一句:Apple 的示例仅使用单个分配: GKTank sample

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 2011-05-14
    • 1970-01-01
    • 2020-01-10
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多