如何制作一个圆形的UIView

我想做一个UIView或UIImageView是一个圆圈。 或者,我可以改变使用滑块的大小,以及使用pickerview的颜色。

我至less可以向你展示绘制任意大小圆圈的捷径。 没有OpenGL,没有核心graphics绘制需要。

导入QuartzCore框架以访问UIView或UIImageView的.cornerRadius属性。

#import <QuartzCore/QuartzCore.h> 

还要手动将其添加到项目的Frameworks文件夹中。

将此方法添加到您的视图控制器或任何你需要的地方:

 -(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和一个直径。 这个例子假定你有一个名为“circ”的UIImageView作为子视图添加到你的视图中 。 它应该有一个backgroundColor设置,所以你可以看到它。

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

这只是处理UIImageViews,但你可以概括为任何UIView

注:从iOS 7开始,clipToBounds需要YES。

 // 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 } } 

在这里输入图像说明

不需要graphics调用。 只需将angular半径设置为宽度/ 2即可。这可以在任何可视对象(即UI元素)上完成

你需要制作一个透明的UIView(背景颜色alpha为0),然后在它的drawRect:中使用CoreGraphics调用绘制你的圆。 你也可以编辑视图的图层,并给它一个cornerRadius。

正如在一些评论中提到的那样,@IBDesignable现在变得更容易了,所以你可以使用Interface Builder来configuration你的四舍五入的UIImageView。

首先创build一个名为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 } } 

在InterfaceBuilder中selectUIImageView并将UIImageView中的类更改为自定义的RoundedImageView:

在这里输入图像说明

Clip to Bounds设置Clip to Bounds (或图片将延伸到圆圈外):

在这里输入图像说明

它现在应该在InterfaceBuilder里面,这非常漂亮。 一定要将宽度和高度设置为相同的值,否则将形状像齐柏林飞艇!

在这里输入图像说明