2016-08-29 1 views
0

В коде я поставил:Просмотр потерять cornerRadius с анимацией UIViewAnimationOptionTransitionFlipFromLeft на прошивке 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; 
        }]; 

Но при работе на прошивке 8, imageView вернулся к норме, значит нет cornerRadius для imageView.

Может ли кто-нибудь сказать мне, почему?

+0

Какой _employeeImage здесь? – vaibhav

+0

Извините, это должно быть 'imageView'. Благодарю. –

+0

так и проблема решена в тебе тоже код? – vaibhav

ответ

1

Вы должны сократить углы UIImage, а не UIImageView, используя CALayer, используя приведенный ниже код.

// 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 градусов, и форма останется до тех пор, пока вы не создадите круглые углы 'image' .. это не другой подход – vaibhav

Смежные вопросы