Üst, ön, arka, yükseklik kısıtlamaları olan arayüz oluşturucuda ayarlanmış özel bir görünümüm var.Otomatik oluşturucu kısıtlamaları, arayüz oluşturucuda görünmüyor kodda ayarlanmış
Özel görünümümde bir başlığa ve bir düğmem var. Başlığa alt ve ortaY kısıtlamaları eklemeye çalışıyorum. ve düğme genişliği, yükseklik, alt, önde gelen kısıtlamalar.
i herhangi bir kısıtlama eklerken arayüz oluşturucu bir uyarı alır:
Beklenen: genişlik = 600, yükseklik = 68.
Fiili: genişlik = 0, height =
i her şey çalışıyor kod çalıştırmasına, ama arayüz oluşturucudaki şey göremiyorum 0.
kodu: Sorunun ne olduğunu çözemiyorum
addConstraint(NSLayoutConstraint)
: Ben de olan kısıtlamaları eklemeye çalıştı
@IBDesignable
class UIHeader: UIView {
var delegate: HeaderDelegate?
private lazy var titleLable: UILabel = {
let lbl = UILabel()
lbl.translatesAutoresizingMaskIntoConstraints = false
lbl.font = UIFont(name: "Lato-Light", size: 16)
lbl.text = "Title"
return lbl
}()
private lazy var backButton: UIButton = {
let btn = UIButton()
btn.tintColor = UIColor.lightGrayColor()
btn.translatesAutoresizingMaskIntoConstraints = false
let image = UIImage(named: "prev")
if let image = image {
btn.setImage(image.imageWithRenderingMode(.AlwaysTemplate), forState: .Normal)
}
btn.addTarget(self, action: #selector(UIHeader.OnBackButtonClickLister(_:)), forControlEvents: .TouchUpInside)
return btn
}()
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
}
extension UIHeader {
@IBInspectable
var backButtonImage: UIImage? {
get {
return backButton.imageForState(.Normal)
}
set (newImage) {
backButton.setImage(newImage?.imageWithRenderingMode(.AlwaysTemplate), forState: .Normal)
}
}
@IBInspectable
var title: String? {
get {
return titleLable.text
}
set (newTitle) {
titleLable.text = newTitle
}
}
}
extension UIHeader {
private func setupView() {
backgroundColor = UIColor.whiteColor()
translatesAutoresizingMaskIntoConstraints = false
addSubview(titleLable)
addSubview(backButton)
//add shadow
layer.shadowColor = UIColor(white: 115/255, alpha: 1.0).CGColor
layer.shadowOpacity = 0.5
layer.shadowRadius = 8
layer.shadowOffset = CGSizeMake(0, -1)
NSLayoutConstraint.activateConstraints([
//Title//
//center x
NSLayoutConstraint(item: titleLable, attribute: .CenterX, relatedBy: .Equal, toItem: self, attribute: .CenterX, multiplier: 1.0, constant: 0),
//bottom
NSLayoutConstraint(item: self, attribute: .Bottom, relatedBy: .Equal, toItem: titleLable, attribute: .Bottom, multiplier: 1, constant: 12),
//button//
//bottom
NSLayoutConstraint(item: self, attribute: .Bottom, relatedBy: .Equal, toItem: backButton, attribute: .Bottom, multiplier: 1, constant: 4),
//leading
NSLayoutConstraint(item: backButton, attribute: .Leading, relatedBy: .Equal, toItem: self, attribute: .Leading, multiplier: 1, constant: 0),
//width
NSLayoutConstraint(item: backButton, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .Width, multiplier: 1, constant: 40),
//height
NSLayoutConstraint(item: backButton, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .Height, multiplier: 1, constant: 40)
])
}
}
.
Teşekkür
Sorun, düzen oluşmadan önce 'init'de bunu yapmaya çalıştığınız bence sorun. – Michael
@Michael, ne demek istiyorsun? Bunu nerede yapıyorum? – ilan
“Init” iniz, henüz düzen olmadığından henüz ayarlanmamış mevcut UI özniteliklerine bağlı olan yeni kısıtlamalar oluşturmak için setupView() işlevini çağırır. Şüpheliyim ki, bu uyarıların kaynağı. Uyarının gidip gitmediğini görmek için, 'layoutSubviews' yerine çağrı yapmayı deneyebilirsiniz. – Michael