簡體   English   中英

定制圓形 UIButton 帶圓形圖像視圖

[英]Custom Round UIButton with Round Image View

我為 UIButton 創建了一個自定義 class,我也使用 @IBInspectable 為我的按鈕添加圓角和陰影。

現在,我想使用相同的按鈕為個人資料圖像選擇器創建一個圓形按鈕。 用戶點擊圓形按鈕,顯示照片庫,用戶選擇一張照片並將所選圖像添加到圓形按鈕。

我的問題是用戶選擇圖片后,按鈕的imageView是方形的而不是圓形的。

我嘗試使用按鈕的 imageView 層並嘗試將其設置為 clipsToBounds 或 maskToBounds 但我認為我遺漏了一些東西。

這是沒有 ImageView 東西的自定義按鈕的代碼:

import UIKit

class RoundShadowButton: UIButton {

    override init(frame: CGRect){
        super.init(frame: frame)
        imageView?.clipsToBounds = true
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        imageView?.clipsToBounds = true
    }


 @IBInspectable
     var cornerRadius: CGFloat {
         get {
            return layer.cornerRadius
         }
         set {
             layer.cornerRadius = newValue
         }
     }

     @IBInspectable
     var borderWidth: CGFloat {
         get {
             return layer.borderWidth
         }
         set {
             layer.borderWidth = newValue
         }
     }

     @IBInspectable
     var borderColor: UIColor? {
         get {
             let color = UIColor.init(cgColor: layer.borderColor!)
             return color
         }
         set {
             layer.borderColor = newValue?.cgColor
         }
     }

     @IBInspectable
     var shadowRadius: CGFloat {
         get {
             return layer.shadowRadius
         }
         set {
            layer.shadowRadius = newValue
         }
     }
     @IBInspectable
     var shadowOffset : CGSize{

         get{
             return layer.shadowOffset
         }set{
             layer.shadowOffset = newValue
         }
     }

     @IBInspectable
     var shadowColor : UIColor{
         get{
             return UIColor.init(cgColor: layer.shadowColor!)
         }
         set {
             layer.shadowColor = newValue.cgColor
         }
     }
     @IBInspectable
     var shadowOpacity : Float {

         get{
             return layer.shadowOpacity
         }
         set {
             layer.shadowOpacity = newValue
         }
     }
 }

選擇圖像前的按鈕

選擇圖像后的按鈕

我認為你錯過了,除非你為你的按鈕設置圖像,否則按鈕的imageViewnil 您應該將maskToBounds設置為您的按鈕,或者在設置圖像后將其設置為 imageView。 另外,請檢查您的圓角半徑,如果您有基於框架的方法,在自動布局期間,您可以根據.zero框架設置圓角半徑

暫無
暫無

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

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