2016-08-29 41 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