hai,我使用加速度计通过设备方向旋转uiimageview,如UIInterfaceOrientationLandscapeRight等。如果我不使用设备方向,(如果我把iphone放在桌子上,加速计必须在特定角度工作。设备在UIInterfaceOrientationPortrait)我该怎么办?我通过该图像视图的中心旋转图像,但我无法理解它旋转的角度,它是否基于中心(作为原点)旋转? (我想要原点的图形表示)如果我想在特定的角度停止旋转,我该怎么做?代码:任何人都可以帮助我......?
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
rollingX = (acceleration.x * 0.1) + (rollingX * (1.0 - 0.1));
rollingY = (acceleration.y * 0.1) + (rollingY * (1.0 - 0.1));
float xx = -rollingX;
float yy = rollingY;
float angle = atan2(yy, xx);
self.angle += M_PI / 2.0;
if(self.angle >= -2.25 && self.angle <= -0.25)
{
if(deviceOrientation != UIInterfaceOrientationPortrait)
{
deviceOrientation = UIInterfaceOrientationPortrait;
self.updatingIsEnabled =YES;
self.foamView.center = CGPointMake(center.x,center.y);
}
}
else if(self.angle >= -1.75 && self.angle <= 0.75)
{
if(deviceOrientation != UIInterfaceOrientationLandscapeRight)
{
deviceOrientation = UIInterfaceOrientationLandscapeRight;
self.updatingIsEnabled =YES;
}
}
else if(self.angle >= 0.75 && self.angle <= 2.25)
{
if(deviceOrientation != UIInterfaceOrientationPortraitUpsideDown)
{
deviceOrientation = UIInterfaceOrientationPortraitUpsideDown;
self.updatingIsEnabled =YES;
self.foamView.center = CGPointMake(center.x,center.y);
}
}
else if(self.angle <= -2.25 || self.angle >= 2.25)
{
if(deviceOrientation != UIInterfaceOrientationLandscapeLeft)
{
deviceOrientation = UIInterfaceOrientationLandscapeLeft;
self.updatingIsEnabled =YES;
self.foamView.center = CGPointMake(center.x,center.y);
}
}
}
答案 0 :(得分:2)
在Apple提供的代码示例中,他们使用加速度计调整屏幕中心的图像方向。希望这个示例代码可以帮助您找到所需内容。 (您需要访问Apple开发人员站点才能下载此代码示例)
干杯 -
答案 1 :(得分:0)
您还可以在视图本身上使用CGAffineTransforms的组合。这些矩阵用于通过旋转或平移来转换视图。如果您愿意,甚至可以为流程制作动画。如果您正在尝试这样做,我可以提供一些示例代码。