使视图四舍五入

要制作圆形 UIView,请为视图的 layer 指定 cornerRadius

这也适用于任何继承自 UIView 的类,例如 UIImageView

编程

SWIFT 代码

someImageView.layoutIfNeeded()
someImageView.clipsToBounds = true
someImageView.layer.cornerRadius = 10

Objective-C 代码

[someImageView layoutIfNeeded];
someImageView.clipsToBounds = YES;
someImageView.layer.cornerRadius = 10;

//Swift code
topImageView.layoutIfNeeded()
bottomImageView.layoutIfNeeded()
topImageView.clipsToBounds = true
topImageView.layer.cornerRadius = 10
bottomImageView.clipsToBounds = true
bottomImageView.layer.cornerRadius = bottomImageView.frame.width / 2

//Objective-C code
[topImageView layoutIfNeeded]
[bottomImageView layoutIfNeeded];
topImageView.clipsToBounds = YES;
topImageView.layer.cornerRadius = 10;
bottomImageView.clipsToBounds = YES;
bottomImageView.cornerRadius = CGRectGetWidth(bottomImageView.frame) / 2;

结果如下,使用指定的圆角半径显示圆角视图效果:

例

注意

为此,你需要包含 QuartzCore 框架。

 #import <QuartzCore/QuartzCore.h>

故事板配置

通过在 Storyboard 中设置相应的属性,也可以实现圆形视图效果。

StackOverflow 文档

由于 layer 属性未在 Storyboard 中公开,因此你必须通过用户定义的运行时属性部分修改 cornerRadius 属性。

StackOverflow 文档

快速扩展

只要它具有相同的宽度和高度,你就可以使用这个方便的扩展来应用圆角视图。

extension UIView {
    @discardableResult
    public func setAsCircle() -> Self {
        self.clipsToBounds = true
        let frameSize = self.frame.size
        self.layer.cornerRadius = min(frameSize.width, frameSize.height) / 2.0
        return self
    }
}

要使用它:

yourView.setAsCircle()