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


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

6 52

6 ответов:

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

импортировать фреймворк 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", добавленный в качестве подвида к вашему view. Он должен иметь backgroundColor установите так, чтобы вы могли видеть его.

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

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

Примечание: начиная с iOS 7, clipToBounds нужно да.

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

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

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

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

enter image description here

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

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

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

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

import UIKit

@IBDesignable public class RoundedImageView: UIImageView {

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

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

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

enter image description here

Set Clip to Bounds в true (или pic будет выходить за пределы круг):

enter image description here

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

enter image description here