如何使用变换旋转UIView?

4

我有一个UIView,我想使用coremotion attitude获取的pitch值来对其进行转换(旋转)。我正在使用transform,但我不确定我的代码是否正确,因为UIView没有做任何事情。

这是我的代码,它每秒被调用多次:

- (void)setLabelValueRoll:(double)roll pitch:(double)pitch yaw:(double)yaw
{
    self.yLabel.text = [NSString stringWithFormat:@"pitch: %f", pitch];


    CATransform3D transform;
    transform = CATransform3DMakeRotation(pitch + M_PI_2, 1, 0, 0);
    self.wapaA.layer.sublayerTransform = transform;
}

我不确定如何设置这部分内容(pitch + M_PI_2,1,0,0),以使俯仰影响我的正方形UIView,因此当您前后倾斜手机时,它会保持水平。


如果wapaA是UIView,则仅应用wapaA.transform即可。 - ZeMoon
如果我这样做,会出现警告“未使用属性访问结果- getter 不应用于副作用”,不幸的是它也不起作用。 - HurkNburkS
2个回答

2

应该使用UIView图层变换属性(layer's transform property)

wapaA.layer.transform = CATransform3DMakeRotation(pitch + M_PI_2, 1, 0, 0); 

太好了!那个起作用了..谢谢你。我最终改变了计算方式以获得我想要的效果 **(pitch + M_PI_2, 0, 0, 1)**。 - HurkNburkS

0

这将会起作用

float degrees = 20; //the value in degrees
view.transform = CGAffineTransformMakeRotation(degrees * M_PI/180);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接