2016-04-25 3 views
0

Мне нужно сделать UIImageView в радиусе круга, я использую этот блок кода для этого taks.Как сделать круг uiimageview.?

-(void)viewWillAppear:(BOOL)animated { 

    [self performSelector:@selector(setStyleCircleForImage:) withObject:_imageview afterDelay:0]; 

    [super viewWillAppear:YES]; 
} 

-(void) setStyleCircleForImage:(UIImageView *)imgView { 

    imgView.layer.cornerRadius = _imageview.frame.size.height/2.0; 
    imgView.clipsToBounds = YES; 
} 

Его рабочие совершенства в прошивкой 5, но когда тест на другом устройстве ему форму это изменение, которое я не знаю, почему это происходит. Пожалуйста, помогите.

+1

Два правила: 1. Ширина и высота компонента должны быть одинаковыми. 2. В вашем случае фрейм может не обновляться, попробуйте поместить его в 'viewWillLayoutSubviews', он должен работать. – iphonic

+0

ok sir я попытался реализовать его –

+0

imgView.layer.cornerRadius = imgView.frame.size.width/2.0; попробуйте это –

ответ

1

Лучше использовать маску, чтобы сделать круг, как эта функция

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self makeCircleImage: _imageview]; 
} 

    -(void)makeCircleImage:(UIImageView *)img{ 
     CGFloat img_width = img.bounds.size.width; 
     UIGraphicsBeginImageContextWithOptions(CGSizeMake(img_width,img_width), NO, 0); 
     CGContextRef c = UIGraphicsGetCurrentContext(); 
     CGContextSetFillColorWithColor(c, [UIColor blackColor].CGColor); 
     CGContextFillEllipseInRect(c, CGRectMake(0,0,img_width,img_width)); 
     UIImage* maskim = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 

     CALayer* mask = [CALayer new]; 
     mask.frame = CGRectMake(0,0,img_width,img_width); 
     mask.contents = (id)maskim.CGImage; 

     img.layer.mask = mask; 
    } 
+0

спасибо sir, я попытался реализовать ваше решение здесь –

+0

да, сэр просто подождите, я мин, я работаю над ним –

+0

как я буду сопоставлять имя моего изображения с этим методом? –

0

Try This

yourImageView.layer.cornerRadius = yourImageView.frame.size.width/2; 
yourImageView.layer.masksToBounds = YES; 
+0

Должен ли я поместить этот код в метод viewdidload? –

+0

есть. вам нужно добавить в viewDidLoad. Почему вы используете Selectror? – Vvk

+0

@sandeeptomar вы должны использовать 'masksToBounds' insted из' clipsToBounds' – Vvk

0

Сначала дайте equal width и equal height для UIImageView, а затем использовать его

imgView.layer.cornerRadius = imgView.frame.size.height/2.0; 

imgView.layer.masksToBounds = YES; 
+0

Я разрешаю свою проблему по ответам капитана EI. Спасибо за поддержку –