我有一个图像(一条直线),我试图从特定点以某个角度旋转它。发生的是图像从其自身的中心点旋转。我不想让图像的底部保持不变,它以我想要的角度旋转,就像时钟一样。 我用
Compass2.layer.anchorPoint= CGPointMake(0.5,1);
[Compass2 setTransform:CGAffineTransformMakeRotation(XXXX)];
然而,它显示了访问属性的未知'achorPoint'组件。 任何人都可以给我一些解决方案
答案 0 :(得分:3)
CGAffineTransform只是一个描述旋转,平移和缩放的矩阵。
请记住,您可以使用
CGAffineTransform CGAffineTransformConcat ( CGAffineTransform t1, CGAffineTransform t2 );
链接变换。这基本上只意味着你将转换矩阵相乘。
所以既然你知道,标准的旋转只是围绕UIImageView的中心旋转,你可以把你的任务分成3个部分,
并将它们联系起来。
CGAffineTransform t = imageView.transform;
CGPoint p = rotationPoint - imageView.center;
imageView.transform = CGAffineTransformTranslate(
CGAffineTransformRotate( CGAffineTransformTranslate(t, p.x, p.y), angle) , -p.x, -p.y);
我没有测试这段代码,但你应该按照这种方式获得解决方案。
编辑:我也意识到我没有使用连接。如果使用“CGAffineTransformMake ...”,则需要使用连接。我只是把功能放在一起。答案 1 :(得分:2)
我有同样的问题。正如“aBitObvious”指出的那样,您必须导入QuartzCore框架才能访问CALayer类的anchorPoint属性。
#import <QuartzCore/QuartzCore.h>
答案 2 :(得分:0)
它给你的错误暗示你正在尝试设置一个不存在的属性。你错过了'anchorPoint'吗?如果情况并非如此,并且您的问题仅有拼写错误,请仔细检查您的类型。你的'Compass2'应该是某种类型的UIView,它的'layer'应该是CALayer对象。
答案 3 :(得分:0)
您可能无法通过导入
来访问视图的属性anchorPoint#import <QuartzCore/QuartzCore.h>
即;
Compass2.layer.anchorPoint= CGPointMake(0.5,1);
为此,您必须在实现文件的开头编写以下import语句。
#import <QuartzCore/CALayer.h>
现在,您将能够编写以下代码而不会产生任何错误。
Compass2.layer.anchorPoint= CGPointMake(0.5,1);