Не получается UIImageView Rounded Border, пока добавлен множитель для UIImageViwe - PullRequest
0 голосов
/ 27 августа 2018

В раскадровке я применил Multiplier по высоте и ширине к UIImageView, затем я просто хочу скруглить границу, поэтому я использовал приведенный ниже код, который не работает для всех iPhone.

_profileImgView.clipsToBounds = YES;
_profileImgView.layer.backgroundColor = color.CGColor;
_profileImgView.layer.cornerRadius =_profileImgView.frame.size.width/2;
_profileImgView.layer.borderColor = [UIColor colorWithRed:253.0/255.0 green:182.0/255.0 blue:43.0/255.0 alpha:100].CGColor;
_profileImgView.layer.borderWidth = 5.0f;

In iPhone5s

In iPhone 7Plus

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

реализовать этот код в том же классе Viewcontroller, это работа для меня

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    _profileImgView.clipsToBounds = YES;
_profileImgView.layer.backgroundColor = color.CGColor;
_profileImgView.layer.cornerRadius =_profileImgView.frame.size.width/2;
_profileImgView.layer.borderColor = [UIColor colorWithRed:253.0/255.0 green:182.0/255.0 blue:43.0/255.0 alpha:100].CGColor;
_profileImgView.layer.borderWidth = 5.0f;

}
0 голосов
/ 27 августа 2018

Так как ваш угловой радиус зависит от размера вашего кадра, вам необходимо обновлять его при каждом изменении размера кадра.Если вы используете раскадровки для своего дизайна, вы получите размер кадра в дизайне при вызове viewDidLoad.Если размер кадра отличается для разных устройств, вы получите окончательный размер в более поздний момент времени в представлениях layoutSubviews или, возможно, в контроллере представления viewDidLayoutSubviews.

Мое предлагаемое решение заключается в подклассеUIImageView и поместите специфику для представления изображения в awakeFromNib и layoutSubviews, затем используйте этот класс вместо UIImageView там, где это необходимо.

// CircularImageView.h
#import <UIKit/UIKit.h>

@interface CircularImageView : UIImageView

@end

// CircularImageView.m
@implementation CircularImageView

- (void)awakeFromNib {
    [super awakeFromNib];

    self.clipsToBounds = YES;
    self.layer.borderColor = [UIColor colorWithRed:253.0/255.0 green:182.0/255.0 blue:43.0/255.0 alpha:100].CGColor;
    self.layer.borderWidth = 5.0f;
}

- (void)layoutSubviews {
    [super layoutSubviews];

    self.layer.cornerRadius = self.frame.size.width / 2;
}

@end
...