在我的iOS應用程序中,我使用UITouchGestureRecognizer拖放,縮放和旋轉UIImageView。我還將信息存儲在ImageView的最後位置,以便在應用程序重新啓動時檢索它。如何正確拖放,旋轉和縮放UIView?
這與iOS7的工作很好,但我最近開始使用iOS8進行測試,而且我正面臨一些問題,特別是使用縮放。每當imageview在旋轉參數中具有非0度角時,變焦不會像預期那樣起作用,並且會縮小圖像的大小。
我不明白爲什麼OS變化的確,這裏是我的代碼:
-(void) viewDidAppear:(BOOL)animated{
[super viewDidAppear:YES];
[self loadAllImages];
for (GIFavorite *favorite in self.favorites){
UIImage *image = favorite.image;
ImageView *imageView = [[ImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
imageView.center = CGPointMake(favorite.x, favorite.y);
imageView.transform = CGAffineTransformMakeRotation(favorite.rotation);
imageView.transform = CGAffineTransformScale(imageView.transform, favorite.scale, favorite.scale);
imageView.image = image;
imageView.userInteractionEnabled = YES;
UIPanGestureRecognizer * panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
panRecognizer.delegate = self;
[imageView addGestureRecognizer:panRecognizer];
UIRotationGestureRecognizer * rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotate:)];
rotationRecognizer.delegate = self;
[imageView addGestureRecognizer:rotationRecognizer];
UIPinchGestureRecognizer * pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)];
pinchRecognizer.delegate = self;
[imageView addGestureRecognizer:pinchRecognizer];
[self.view addSubview:imageView];
}
}
我想我做變換的方式是錯誤的,因爲當我把CGAffineTransformMakeRotation
指令CGAffineTransformScale
,而不是之後減少它的大小,增加它。
我在哪裏做事錯了?
編輯:爲handleRotate
代碼- (void)handleRotate:(UIRotationGestureRecognizer *)recognizer {
recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
ImageView *imageView = recognizer.view;
CGFloat radians = atan2f(imageView.transform.b, imageView.transform.a);
favorite.rotation = radians;
recognizer.rotation = 0;
}
我已經實現了該方法。請看我的編輯。 – Gannicus
嘗試我的新更新代碼.. – krushnsinh