Я хочу сделать UIView или UIImageView, который является кругом. Или круг, в котором я могу изменить размер слайдера и цвет с помощью pickerview.
Как сделать круговой UIView
Ответ 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!