Xcode iPhone加速计图片
问题描述:
我是法国人,所以请原谅我的英文。所以我使用加速度计,但在我的代码中,加速度计用于视图而不是图像。我想要做的是将这个加速度计用于图像而不是视图。我怎样才能做到这一点?下面是代码:Xcode iPhone加速计图片
#define CONST_fps 100.
#define CONST_map_shift 0.01
#define kFilteringFactor 0.1
UIAccelerationValue rollingX, rollingY, rollingZ;
@implementation MapViewRotationViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// accelerometer settings
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0/CONST_fps)];
}
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
rollingX = (acceleration.x * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));
rollingY = (acceleration.y * kFilteringFactor) + (rollingY * (1.0 - kFilteringFactor));
rollingZ = (acceleration.z * kFilteringFactor) + (rollingZ * (1.0 - kFilteringFactor));
float accelX = acceleration.x - rollingX;
float accelY = acceleration.y - rollingY;
float accelZ = acceleration.z - rollingZ;
static CGFloat ZZ = 0.;
CGFloat z = (atan2(rollingX, rollingY) + M_PI);
if (fabsf(ZZ - z) > CONST_map_shift)
{
viewToRotate.layer.transform = CATransform3DMakeRotation(ZZ=z, 0., 0., 1.);
}
}
@end
答
你并不需要有一个观点回调,而不是你可以选择任何类,以符合协议UIAccelerometerDelegate。只需要声明你的类在头文件作为
@interface MyClass : NSObject <UIAccelerometerDelegate> {
// my members
}
在MyClass.m你必须实现方法
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
// do what you like
}
但是,如果你不被迫支持的iOS 3.x版本,你应该考虑使用CoreMotion API。有关更多信息和示例,请参见Event Handling Guide for iOS/Motion Events。
我不明白你在这里问什么。如果您可以使用上面的代码旋转视图,为什么不能将该视图变成UIImageView? – 2011-04-18 17:45:22