Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 为什么要按顺序为UIView变换属性赋值?_Iphone_Ios_View_Transform - Fatal编程技术网

Iphone 为什么要按顺序为UIView变换属性赋值?

Iphone 为什么要按顺序为UIView变换属性赋值?,iphone,ios,view,transform,Iphone,Ios,View,Transform,在阅读示例代码时,我发现了一些关于方向更改的代码。有趣的是self.view的transform属性是按顺序赋值的。从逻辑上讲,第一个赋值似乎没有任何效果,因为它被后面的赋值覆盖了 - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { if (UIInterfaceOrienta

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

- (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);
    }
}
doc说,在定向动画实际发生之前,调用方法WillAnimateRotationInterfaceOrientation


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

嗯,标识转换本身并没有任何作用。所以这里的双重任务是没有意义的

顺便说一句:来自苹果的样本只使用单一赋值:

我同意,那些分配身份矩阵的行似乎毫无意义。这个示例代码来自哪里?来自OK的书的源代码,他们犯了一个错误。这种情况经常发生。我会向他们报告这一点,以便他们能够纠正它。没什么大不了的。