如何制作带圆角的UIImage / -View CGRect(Swift)

时间:2014-08-24 20:43:14

标签: uiimageview swift rounded-corners swift-playground

如何在Swift iOS Playground上制作带圆角的UIImageView? 里面需要填充颜色。

8 个答案:

答案 0 :(得分:156)

let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
imageView.backgroundColor = UIColor.redColor()
imageView.layer.cornerRadius = 8.0
imageView.clipsToBounds = true

结果:

enter image description here

答案 1 :(得分:24)

对于swift中的圆形图像框架,它对我有用的是:

    self.profileImageView.image =  UIImage(named:"profileUser")
    self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
    self.profileImageView.clipsToBounds = true

添加阴影:

    self.profileImageView.layer.masksToBounds = NO;
    self.profileImageView.layer.cornerRadius = 8;
    self.profileImageView.shadowOffset = CGSizeMake(5.0, 5.0);
    self.profileImageView.shadowRadius = 5;
    self.profileImageView.shadowOpacity = 0.5;

答案 2 :(得分:18)

试试这个,它对我有用。

self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true

答案 3 :(得分:13)

我厌倦了为每个UIView编写设置半径和掩码绑定。所以我为UIView做了以下扩展。应该适用于每个UIView子类,尽管我还没有测试过它。对于您当然使用的特定视图,可以缩小扩展名。

extension UIView {      
    func setRadius(radius: CGFloat? = nil) {
        self.layer.cornerRadius = radius ?? self.frame.width / 2;
        self.layer.masksToBounds = true;
    }
}

如果您没有将任何特定值传递给它,它将默认为视图的半宽。

答案 4 :(得分:5)

Swift 3.0、4.0

如果要使用情节提要。 我应用了此功能,并确保启用了“限制范围”。

enter image description here

答案 5 :(得分:3)

如果您希望舍入每个UIImageView,可以将这段代码复制到您的项目中,而不必忘记选中clip to bounds并将其值设置为true

import UIKit

@IBDesignable
extension UIImageView
{
    private struct AssociatedKey
    {
        static var rounded = "UIImageView.rounded"
    }

    @IBInspectable var rounded: Bool
    {
        get
        {
            if let rounded = objc_getAssociatedObject(self, &AssociatedKey.rounded) as? Bool
            {
                return rounded
            }
            else
            {
                return false
            }
        }
        set
        {
            objc_setAssociatedObject(self, &AssociatedKey.rounded, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
            layer.cornerRadius = CGFloat(newValue ? 1.0 : 0.0)*min(bounds.width, bounds.height)/2
        }
    }
}

screenshot

答案 6 :(得分:1)

在身份检查器的用户定义的运行时属性部分中,

设置 layer.cornerRadius = 10 甚至适用于表单元格之类的可重复元素。

答案 7 :(得分:1)

Swift 5.0:

我个人的喜好是为这样的特定更改提供一个额外的快速文件。然后我要做的是创建一个类,例如“ RoundCorner”是我想在这种情况下更改的View元素的元素的子类。然后,我将覆盖各个设置。

$Link

此后,您只需选择要对其进行更改的元素,并将自定义类设置为我们之前创建的类。

Look at the screenshot here