2011-04-18 20 views
5

Fransızcayım, bu yüzden İngilizcem için özür dilerim. Bu yüzden bir ivmeölçer kullanıyorum, ama kodumda ivmeölçer bir görüntü için değil, bir görünüm için çalışıyor. Yapmak istediğim, bu ivme ölçerini görüntü yerine bir görüntü için kullanmaktır. Bunu nasıl yapabilirim? Sen protokol UIAccelerometerDelegate uyması için bunun yerine herhangi bir sınıf seçebilirsiniz geri arama gibi bir görünüme sahip gerekmezXcode iPhone ivmeölçer image

#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 
+0

Burada ne sorduğunuzu anlamıyorum. Yukarıdaki kodu kullanarak bir görünümü döndürebilirseniz, bu görünüm neden bir UIImageView olamaz? –

cevap

2

: İşte kodudur. Sadece yöntemini

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { 
    // do what you like 
} 

uygulamak zorunda

MyClass.m yılında
@interface MyClass : NSObject <UIAccelerometerDelegate> { 
    // my members 
} 

olarak başlık dosyasına sınıfınızı beyan Ama iOS sürümü 3.x desteklemek zorunda değilse, sen kullanmayı düşünmelisiniz CoreMotion API'sı. Daha fazla bilgi ve örnek için bkz. Event Handling Guide for iOS/Motion Events.