已经有一段时间了,因为我在一次摩托车事故后住院了3个月。 所以我只需更新我的苹果编程订阅: - )
我有另一个问题,已经有很长一段时间了。 在我的iPad应用程序中,我在iPad的中心画一个三角形,如下所示:
- (void)initTriangle
{
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;
// draw triangle (TRIANGLE)
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path,NULL, 0.5*screenWidth, 0.5*screenHeight-25);
CGPathAddLineToPoint(path, NULL, 0.5*screenWidth-25, 0.5*screenHeight+25);
CGPathAddLineToPoint(path, NULL, 0.5*screenWidth+25, 0.5*screenHeight+25);
CGPathAddLineToPoint(path, NULL, 0.5*screenWidth, 0.5*screenHeight-25);
CAShapeLayer *triangle = [CAShapeLayer layer];
[triangle setPath:path];
[triangle setFillColor:[[UIColor blackColor] CGColor]];
[[[self view] layer] addSublayer:triangle];
CGPathRelease(path);
}
我从我的viewDidLoad这样称呼它:
[self initTriangle];
现在我试图旋转这个三角形,同时我的iPad围绕Z轴旋转,同时平放在桌子上。我有一个功能,给我浮动的偏航读数,我打电话给我 - (无效)updateTriangleWithYaw:(浮点)的偏航 方法,但我不知道该把它放在那里让它旋转。
这是我的方法到目前为止的样子:
-(void)updateTriangleWithYaw:(float)yaw
{
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;
NSLog(@"YAW: %f", yaw);
Z += 2 * yaw;
Z *= 0.8;
CGFloat newR = R + 10 * yaw;
self.triangle.frame = CGRectMake(0.5*screenWidth, 0.5*screenHeight, newR, newR);
}
任何帮助将不胜感激!
谢谢并且安全!!!
答案 0 :(得分:0)
您应该设置图层affineTransform
。您可以应用旋转变换,如:
[self.triangle setAffineTransform:CGAffineTransformMakeRotation(yaw)];
此方法setAffineTransform
可以方便地设置图层的transform
属性,这是一种更为通用的转换类型CATransform3D
。您也可以直接设置图层的transform
,如果您想这样做,可以围绕z轴进行旋转,如:
self.triangle.transform = CATransform3DMakeRotation(yaw, 0, 0, 1);
在这种情况下,第一个参数是角度(以弧度表示),后三个参数指定旋转轴。
请注意,您不应分配或依赖其转换不是标识(frame
)的图层的CGAffineTransformIdentity
属性的值。当您使用转换属性时,您应该通过指定图层的center
和bounds
属性来设置图层的大小和位置,同样您应该阅读center
和{ {1}}当您想要了解有关图层位置和大小的信息时。