2
我創建以下列方式按鈕,在我的ViewController:如何將自定義類設置爲以編程方式創建的UIButton?
var userButton: Button!
override func viewDidLoad() {
userButton = Button()
userButton.frame = CGRect(x: self.view.frame.width/2 + 90, y:
self.view.frame.height/1.5 + 110, width: 100, height: 100)
userButton.addTarget(self, action: #selector(MainController.userButtonTapped(sender:)), for: .touchUpInside)
self.view.addSubview(userButton)
}
這是Button類我創建:
import UIKit
@IBDesignable
class Button: UIButton {
// MARK: - PROPERTIES
@IBInspectable var cornerRadius: CGFloat = 3.0 {
didSet {
setupView()
}
}
// MARK: - CONFIGURATION
override func awakeFromNib() {
setupView()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setupView()
}
/**
* Sets default properties to the view.
*/
func setupView() {
self.layer.cornerRadius = cornerRadius
* Shadow properties */
self.layer.shadowColor = SHADOW_COLOR.cgColor
self.layer.shadowOpacity = 0.6
self.layer.shadowRadius = 6.0
self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0)
}
}
當運行應用程序,userButton沒有在課堂上設置的屬性。但是,當我在ViewController中設置這些屬性時,它可以工作。爲什麼它不適用於課堂?
如果子視圖的邊界並沒有改變,爲什麼你調用viewDidLayoutSubViews? – Nan
在awakeFromNib你的佈局沒有形成,這就是爲什麼我要求你在這裏執行代碼,如果你想操縱你的佈局。 – Himanshu
這不起作用,因爲UIButton沒有viewDidLayoutSubViews。 –