2012-07-23 54 views
2

我有UIImageView在UIScrollView中。我使用以下代碼將圖像加載到UIImageView的CALayer中:UIImageView.layer的變換影響UIScrollView zoomScale

UIImage *image = [UIImage imageNamed: fileToDisplay];  
NSLog(@"If I don't flip image imageScrollView.zoomScale: %f", imageScrollView.zoomScale); 
[[imageView layer] setContents: (id)image.CGImage]; 
if (flipped) 
{ 
    [[imageView layer] setTransform: CATransform3DMakeRotation(180.0/180.0 * M_PI, 0.0, 1.0, 0.0)]; 
    NSLog(@"If image flipped imageScrollView.zoomScale: %f", imageScrollView.zoomScale); 
} 

我正在'翻轉'y軸的圖像。這起突發事件是,imageView.layer的轉型正在改變imageScrollView.zoomScale如下面的輸出:

如果我不翻轉圖像imageScrollView.zoomScale:0.465455

如果圖像翻轉imageScrollView。 zoomScale:1.000000

我的問題是我該如何讓這不會發生?如果沒有辦法打敗這種行爲,那麼我需要做些什麼才能實現在圖像上執行的圖像幀,而不會翻轉。換句話說,將zoomScale設置爲變換之前的內容不起作用。 UIScrollView中的其他內容已經改變(不是contentSize或contentOffset)。

感謝您的幫助。

回答

0

由於您使用的是方法,因此您正在創建新變換並替換當前變換。您需要使用CATransform3DRotate,以將旋轉添加到當前變換(用於縮放)。

imageView.layer.transform = CATransform3DRotate(imageView.layer.transform , 180.0/180.0 * M_PI, 0.0, 1.0, 0.0);