Вопрос

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

Это было полезно?

Решение

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

Импортировать рамку Quartzcore, чтобы получить доступ к .cornerradius Свойство вашего Uiview или Uiimageview.

#import <QuartzCore/QuartzCore.h>

Также вручную добавьте его в папку Framework вашего проекта.

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

-(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", добавленная в качестве подвиги в ваш Посмотреть. Анкет У него должно быть фоновый цвет Установите, чтобы вы это могли увидеть.

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;

Если кто -то ищет быстрый эквивалент, чем ниже, является ответом (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. Это можно сделать на любом визуальном объекте, т.е. UI элемент

Как упоминалось в некоторых комментариях, @ibdesignable теперь делает это намного проще, поэтому вы можете использовать интерфейс -строитель для настройки вашего округленного 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 в интерфейс -строиде и измените класс из Uiimageview на пользовательский RoundEdimageView:

enter image description here

Установлен Clip to Bounds к истинному (или картинку будет проститься за пределы круга):

enter image description here

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

enter image description here

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top