2016-08-29 75 views
0

失去cornerRadius與UIViewAnimationOptionTransitionFlipFromLeft的動畫在代碼中,我已設置:在iOS上觀看8

imageView.layer.masksToBounds = YES; 
imageView.layer.cornerRadius = imageView.frame.size.width/2; 

而且在動畫塊運行它:

[UIView transitionWithView:imageView 
         duration:1.0 
         options:UIViewAnimationOptionTransitionFlipFromLeft 
        animations:nil 
        completion:^(BOOL finished) { 
         imageView.hidden = YES; 
        }]; 

但在iOS 8,運行時, imageView恢復正常,表示imageView沒有cornerRadius

誰能告訴我爲什麼?

+0

什麼_employeeImage在這裏? – vaibhav

+0

對不起,它應該是'imageView'。謝謝。 –

+0

所以問題也解決了你的代碼嗎? – vaibhav

回答

1

你需要使用CALayer使用下面的代碼削減的UIImageUIImageView角落。

// load image on imageView programmatically 
UIImage *image = [UIImage imageNamed:@"yourImage.png"]; 

// assign the changes reflected using method before load image to imageView 
image = [self makeRoundedImage:image radius:_imageView.frame.size.width/2]; 
_imageView.image = image; 

// method to create round image 
-(UIImage *)makeRoundedImage:(UIImage *) image radius: (float) radius{ 

    CALayer *imageLayer = [CALayer layer]; 
    imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height); 
    imageLayer.contents = (id) image.CGImage; 

    imageLayer.masksToBounds = YES; 
    imageLayer.cornerRadius = radius; 

    UIGraphicsBeginImageContext(image.size); 
    [imageLayer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return roundedImage; 
} 

現在,你可以簡單地套用動畫。

+0

是的,這是我暫時解決這個問題,但我需要了解它爲什麼會發生?不是另一種方法。但非常感謝兄弟。 –

+0

找不到永久解決方案?我在我的答案中寫了**原因**你需要削減UIImage的角落而不是UIImageView'。 – vaibhav

+0

根據你的方法,你正在創建'imageView'的圓角,但裏面的'image'仍然是自己的形狀,直到你應用任何改變,所以每當你應用動畫時,圖像將以360度旋轉,並且形狀將保持直到你創建'圖像'的圓角..這不是另一種方法 – vaibhav