Как сделать круглый uiview
-
18-09-2019 - |
Вопрос
Я хочу сделать 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;
Нет необходимости в графических вызовах. Просто установите радиус углового на ширину / 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:
Установлен Clip to Bounds
к истинному (или картинку будет проститься за пределы круга):
Теперь он должен округлять себя прямо в InterfaceBuilder, который довольно изящный. Обязательно установите ширину и высоту на те же значения, иначе она будет формироваться как Zeppelin!
Вам нужно сделать прозрачный Uiview (фоновый цвет альфа 0), а затем, в его рисунке: Нарисуйте свой круг, используя вызовы CoreGraphics. Вы также можете отредактировать слой вида и дать ему Cornerradius.