2016-03-26 22 views
0

Ich erstelle eine benutzerdefinierte UIView, die eine UIImageView und ein UILabel hier ist die Klasse für sie enthalten sollte.Gewohnheit UIView in schnellen

import UIKit 

class AnswersCustomView: UIView { 
    var myImageView = UIImageView() 
    var myLabel = UILabel() 
    override init (frame : CGRect) { 
     super.init(frame : frame) 
     backgroundColor = UIColor.blueColor() 
     addLabel() 
     bringSubviewToFront(myLabel) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 
    func addLabel(){ 
     let myViewFrame = self.frame 
     myLabel.frame = myViewFrame 
     myLabel.backgroundColor = UIColor.redColor() 
     myLabel.center=self.center 

     addSubview(myLabel) 
    } 


} 

, wenn ich eine Instanz dieser Ansicht aus einem UIViewController erstellen. die UIView hinzugefügt werden, aber es scheint, dass die UILabel nicht ist. einen Grund dafür?

+0

Das Label ist leer. – James

+0

Sie sollten Ihr IBOutlet von Ihrer Xib-Datei auf Ihre AnswersCustomView verweisen. – Khuong

+1

Das Etikett sollte einen Rahmen der Grenzen der Ansicht haben - nicht der Rahmen der Ansicht – Hamish

Antwort

1

Wie bereits im Kommentar erwähnt, könnte ein Problem sein, dass das Etikett einen falschen Rahmen hat.
wie der Rahmen in Apple-Dokumentation angegeben ist:

Dieses Rechteck definiert die Größe und die Position der Ansicht in seinem Koordinatensystem des Superview. Sie verwenden dieses Rechteck während des Layouts Operationen, um die Ansicht zu vergrößern und zu positionieren. Durch das Festlegen dieser Eigenschaft wird der durch die Eigenschaft center angegebene Punkt und die Größe im Begrenzungsrechteck entsprechend geändert. Die Koordinaten des Rahmenrechtecks ​​ werden immer in Punkten angegeben.

Das erstellte Label ist subview der Instanz AnswersCustomView, nicht die AnswersCustomView Superview, so sollten Sie die Beschriftung der Rahmen als Überblicks Grenzen gesetzt.

Die andere ist Autolayout: Sie verwenden es nicht. Ich weiß nicht, wie Sie das AnswerView erstellen, bit, wenn sein anfänglicher Rahmen Null ist, bleibt Ihr Label Null, Sie sollten es hinzufügen und Constraints oder zumindest Autoresizing-Masken setzen.
Eine andere kann sein, wenn Sie die Ansicht in einem xib erstellen, in diesem Fall wird iniWithCoder aufgerufen und hier platzieren Sie keine Beschriftung.

Zur Vereinfachung Ansicht Apple-Debugging hat ein neues Tool hinzugefügt, die in 3d https://www.raywenderlich.com/98356/view-debugging-in-xcode-6 Ihre Ansicht Hierarchie zeigt