UIImage в круге - PullRequest
       18

UIImage в круге

21 голосов
/ 11 декабря 2010

Может кто-нибудь помочь мне здесь? Новинка как разработчик iPhone. Я пытаюсь отобразить изображение .png по кругу вместо прямоугольника, что является стандартом для iPhone

Ответы [ 8 ]

52 голосов
/ 11 декабря 2010

Что ж, все файлы png являются «прямоугольниками», но если вы хотите, чтобы на экране появилось изображение круга или другого не прямоугольного объекта, вы можете сделать это с помощью прозрачности.Чтобы убедиться, что прозрачные пиксели на изображении также прозрачны на iPhone, вы можете установить цвет фона UIImageView, чтобы очистить.Это можно сделать в Интерфейсном Разработчике, перетаскивая ползунок непрозрачности в палитре цветов фона полностью вниз или в коде следующим образом:

UIImage *image = [UIImage imageNamed:@"yourRoundImage.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.backgroundColor = [UIColor clearColor];
[self.view addSubview: imageView];

Если вы просто хотите добавить углы округления, чтобы сделать кругвы также можете использовать свойство cornerRadius, как это, если вы добавили инфраструктуру QuartzCore в свой проект:

#import <QuartzCore/QuartzCore.h>
UIImage *image = [UIImage imageNamed:@"yourRoundImage.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.layer.cornerRadius = image.size.width / 2;
imageView.layer.masksToBounds = YES;
[self.view addSubview: imageView];
28 голосов
/ 12 апреля 2014

попробуйте этот код

yourImageView.layer.cornerRadius = yourImageView.frame.size.height /2;
yourImageView.layer.masksToBounds = YES;
yourImageView.layer.borderWidth = 0;

это изображение показа как круговое изображение ios 7 спасибо

15 голосов
/ 25 января 2016

Мой вклад с быстрым расширением, используемым для установки UIImageView в виде круга

extension UIImageView{

    func asCircle(){
        self.layer.cornerRadius = self.frame.width / 2;
        self.layer.masksToBounds = true
    }

}

Просто позвоните MyImageView.asCircle()

9 голосов
/ 11 декабря 2010

Используйте UIImageView и установите cornerRadius равным половине высоты и ширине.view.layer.cornerRadius = cornerRadius;

UIImage закругленные углы

4 голосов
/ 30 сентября 2015

Попробуйте, чтобы получить закругленные углы изображения. Просмотр, а также раскрасить углы:

self.imgView.layer.cornerRadius =self.imgView.frame.size.height/2;
self.imgView.layer.masksToBounds = YES;
self.imgView.layer.borderColor = [UIColor colorWithRed:148/255. green:79/255. blue:216/255. alpha:1.0].CGColor;
self.imgView.layer.borderWidth=2;

Условие *: высота и ширина imageView должны быть одинаковыми для получения закругленных углов.

2 голосов
/ 21 июля 2014

Изменение угла-угла просмотра изображений работает хорошо, если у вас есть только несколько изображений в вашем представлении.Однако, если представление изображения находится в виде таблицы, это повлияет на производительность.

Некоторые из других параметров:

  1. Сделать ресурсы изображения круговыми на сервере или вручную, если они связаны вприложение с прозрачными частями для внешней области круга.
  2. Если фон представления изображения не изменяется, создайте наложенное изображение с прозрачной внутренней частью круга, а остальное должно бытьтак же, как фон.Также установите backgroundColor вида изображения в clearColor.
  3. При получении изображений отредактируйте их в коде, чтобы они были в виде круга, в фоновом потоке.
1 голос
/ 01 февраля 2018

Swift 4: Это должно отобразить ваш .png по кругу.

  1. Перетащите (Ctrl + клик) IBOutlet изображения к вашему коду.

enter image description here

cornerRadius Радиус, используемый при рисовании закругленных углов для фона слоя.Animatable.https://developer.apple.com/documentation/quartzcore/calayer/1410818-cornerradius

свойство clipsToBounds Логическое значение, определяющее, ограничены ли подпредставления границами представления.https://developer.apple.com/documentation/uikit/uiview/1622415-clipstobounds

2.Внутри viewDidLoad (), Используйте свойство экземпляра layer.cornerRadius и clipsToBounds.

profileImage.layer.cornerRadius = 50
profileImage.clipsToBounds = true
0 голосов
/ 05 февраля 2016

Я добавлю немного более универсальное расширение для UIImageView, которое будет работать с неквадратными изображениями.Следует отметить, что он будет работать медленнее, чем метод cornerRadius.

extension UIImageView {
    @IBInspectable public var asEllipse:Bool {
        get {
            if let mask = self.layer.mask {
                return mask.name == kMaskLayerName
            }
            return false;
        }

        set {
            if (newValue) {
                let ellipseMask = CAShapeLayer()
                ellipseMask.name = kMaskLayerName
                ellipseMask.path = CGPathCreateWithEllipseInRect(self.bounds, nil)
                ellipseMask.strokeColor = UIColor.clearColor().CGColor
                ellipseMask.fillColor = UIColor.whiteColor().CGColor
                self.layer.mask = ellipseMask
            } else if self.asEllipse {
                self.layer.mask = nil
            }
        }
    }

}

private let kMaskLayerName="EllipseMaskLayer"
...