[英]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
}
}
}
我認為你錯過了,除非你為你的按鈕設置圖像,否則按鈕的imageView
是nil
。 您應該將maskToBounds
設置為您的按鈕,或者在設置圖像后將其設置為 imageView。 另外,請檢查您的圓角半徑,如果您有基於框架的方法,在自動布局期間,您可以根據.zero
框架設置圓角半徑
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.