Xcode 旋转图像视图时,大小会缩小

Xcode 旋转图像视图时,大小会缩小,xcode,core-animation,Xcode,Core Animation,上图是我在执行以下代码之前的视图 @interface ViewController () @property (nonatomic, weak) IBOutlet UIView *layerView; @end @implementation ViewController @synthesize layerView; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after lo

上图是我在执行以下代码之前的视图

@interface ViewController ()
@property (nonatomic, weak) IBOutlet UIView *layerView;
@end


@implementation ViewController
@synthesize layerView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_4);
    self.layerView.layer.affineTransform = transform;
}

... //  more code

上图是执行代码后的视图。
我希望雪人旋转到相同的大小。但是,出于某种原因,它给了我一个非常小的雪人。。。有人注意到这个错误吗?

层使用CATTransform3D,而不是CGAffineTransform。两者不可互换

您应该会收到该代码的编译器警告


有用于操作CATTransform3D的等效函数。在这种情况下,您需要CATTransferM3dMakeRotation。该方法围绕三维向量旋转。您可能希望为x和y传递0,为向量的z传递1。这将使层执行平面2D旋转,就像您的代码将CGAffineTransform应用于视图时所做的那样。

您对CALayer上的常规
变换
属性是正确的,但也有一种方法
setAffineTransform:
采用
CGAffineTransform
@KurtRevis,没错,但这只是在这一点上混淆了问题。我的观点是,这是他的代码正在调用的方法。因此,它不应该引起编译器警告。@KurtRevis:哦,你说得对。我的错误。不过,从所附的图像看,他的变换确实不正确。您使用的是自动布局吗?