Подтвердить что ты не робот

Как сделать круговой UIView

Я хочу сделать UIView или UIImageView, который является кругом. Или круг, в котором я могу изменить размер слайдера и цвет с помощью pickerview.

4b9b3361

Ответ 1

Я могу хотя бы показать вам ярлык для рисования кругов произвольного размера. Нет OpenGL, не требуется графический чертеж Core.

Импортируйте среду QuartzCore, чтобы получить доступ к свойству .cornerRadius вашего UIView или UIImageView.

#import <QuartzCore/QuartzCore.h>

Также вручную добавьте его в свою папку с файлами проекта.

Добавьте этот метод в свой контроллер просмотра или где вам это нужно:

-(void)setRoundedView:(UIImageView *)roundedView toDiameter:(float)newSize;
{
    CGPoint saveCenter = roundedView.center;
    CGRect newFrame = CGRectMake(roundedView.frame.origin.x, roundedView.frame.origin.y, newSize, newSize);
    roundedView.frame = newFrame;
    roundedView.layer.cornerRadius = newSize / 2.0;
    roundedView.center = saveCenter;
}

Чтобы использовать его, просто передайте ему UIImageView и диаметр. В этом примере предполагается, что UIImageView с именем "circ" добавлен в качестве подсмотра к вашему представлению. Он должен иметь набор backgroundColor, чтобы вы могли его видеть.

circ.clipsToBounds = YES;
[self setRoundedView:circ toDiameter:100.0];

Это просто обрабатывает UIImageViews, но вы можете обобщить его на любой UIView.

ПРИМЕЧАНИЕ.. Поскольку iOS 7, clipToBounds нужно ДА.

Ответ 2

// For those looking to round the corners of an image view
imageView.layer.cornerRadius = imageView.bounds.size.width/2;
imageView.layer.masksToBounds = YES;

Ответ 3

Если кто-то ищет эквивалент Swift, чем ниже, ответ (Xcode7.2):

(для этого высота и ширина должны быть равны.)

extension UIView {
    func makeCircular() {
        self.layer.cornerRadius = min(self.frame.size.height, self.frame.size.width) / 2.0
        self.clipsToBounds = true
    }
}

введите описание изображения здесь

Ответ 4

Нет необходимости в графических вызовах. Просто установите радиус угла в ширину /2. Это можно сделать на любом визуальном объекте, т.е. UI element

Ответ 5

Вам нужно сделать прозрачный UIView (цвет фона фона 0), а затем в его drawRect:, нарисуйте круг, используя вызовы CoreGraphics. Вы также можете отредактировать слой вида и дать ему cornerRadius.

Ответ 6

Как уже упоминалось в некоторых комментариях, @IBDesignable делает это намного проще, поэтому вы можете использовать Interface Builder для настройки округленного UIImageView.

Сначала создайте класс с именем RoundedImageView.swift и вставьте в него этот код:

import UIKit

@IBDesignable public class RoundedImageView: UIImageView {

    override public func layoutSubviews() {
        super.layoutSubviews()

        //hard-coded this since it always round
        layer.cornerRadius = 0.5 * bounds.size.width
    }
}

Выберите UIImageView в InterfaceBuilder и измените класс из UIImageView на пользовательский RoundedImageView:

введите описание изображения здесь

Установите Clip to Bounds в значение true (или изображение выйдет за пределы круга):

введите описание изображения здесь

Теперь он должен округлить себя в интерфейсе InterfaceBuilder, который довольно изящный. Не забудьте установить ширину и высоту одинаковых значений, иначе она будет похожа на zeppelin!

введите описание изображения здесь