簡體   English   中英

如何制作帶有圓角的 UIImage/-View CGRect (Swift)

[英]How do I make an UIImage/-View with rounded corners CGRect (Swift)

如何在 Swift iOS Playground 上制作帶圓角的 UIImageView?
在里面它需要填充一種顏色。

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

結果:

在此處輸入圖片說明

對於 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;

試試這個,它對我有用。

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

我厭倦了為每個 UIView 編寫設置半徑和掩碼來綁定 所以我為 UIView 做了以下擴展。 應該適用於每個 UIView 子類,盡管我還沒有測試過。 當然,可以針對您使用的特定視圖縮小擴展范圍。

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

如果您不傳遞任何特定值,它將默認為視圖的半寬。

斯威夫特 3.0、4.0

如果你想使用故事板。 我應用了這個並確保啟用“剪輯到邊界”。

在此處輸入圖片說明

如果您想有一個選項來舍入每個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
        }
    }
}

截屏

斯威夫特 5.0:

我個人的偏好是為像這樣的特定更改提供一個額外的 swift 文件。 然后我要做的是創建一個類,例如“RoundCorner”,它是我想在這種情況下更改為 View 元素的元素的子類。 然后我覆蓋了各個設置。

class RoundCorner: UIView {
override func draw(_ rect: CGRect) {
    self.layer.cornerRadius = 10 // change this number to get the corners you want
    self.layer.masksToBounds = true
    }
}

之后,您只需選擇要更改的元素,並將自定義類設置為我們之前創建的類。

看這里的截圖

在身份檢查器的用戶定義的運行時屬性部分設置layer.cornerRadius = 10甚至適用於可重復元素,如表格單元格。

在 Swift 4 中,你可以很容易地做到這一點:

yourUIImage.layer.cornerRadius = 10 // Set it how you prefer
yourUIImage.layer.masksToBounds = true

如果您使用相當長的矩形圖像,例如用於您應用程序中的特色內容部分或其他任何內容,請確保將Content Mode設置為“ Scale To Fit ,否則角會以某種方式變圓但會被嚴重切割並且不會是一個完美的圓角,而是一個圓角,然后在它夾住的地方進行銳利的切割。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM