2015-11-26 33 views
8

Alttan görünen ve bir süre sonra gizlenen bir görünüm oluşturdum ve iyi çalışıyor, ancak bir modal olarak UIView sınıfında yapmak istiyorum, internete baktım ama yapamazdım Bunu nasıl yapacağınızı veya anladığınızı anlayın. Özel UIView Sınıfı - Swift

snake = UIView(frame: CGRect(x: 0 , y: self.view.frame.size.height-66, width: self.view.frame.size.width, height: 66)) 
snake.backgroundColor = UIColor(red: 50/255, green: 50/255, blue: 50/255, alpha: 1.0) 


let label = UILabel(frame: CGRect(x: 12, y: 8, width: snake.frame.size.width-90, height: 50)) 
label.text = "Connection error please try again later!!" 
label.textColor = UIColor.whiteColor() 
label.numberOfLines = 0 
label.font = UIFont.systemFontOfSize(14) 
snake.addSubview(label) 

let button = UIButton(frame: CGRect(x: snake.frame.size.width-87, y: 8, width: 86, height: 50)) 
button.setTitle("OK", forState: UIControlState.Normal) 
button.setTitleColor(UIColor(red: 76/255, green: 175/255, blue: 80/255, alpha: 1.0), forState: UIControlState.Normal) 
button.addTarget(self, action: "hideSnackBar:", forControlEvents: UIControlEvents.TouchUpInside) 
snake.addSubview(button) 
self.view.addSubview(snake) 

nasıl, ben onun çerçeveli programlı görünümü hiçbir fikri oluşturma ettik bu sınıfa başlamak ve ben örneğin veya etiket için düğme için özellikleri ayarlamak ve herhangi sınıftan görünüm oluşturmak gerekir.

class snake: UIView { 


    override init (frame : CGRect) { 
     super.init(frame : frame) 

    } 

    convenience init() { 
     self.init(frame:CGRect.zero) 
    } 

    required init(coder aDecoder: NSCoder) { 
     fatalError("This class does not support NSCoding") 
    } 

} 

cevap

13

kodu:

var label:UILabel! 
var button:UIButton! 

override init (frame : CGRect) { 
    super.init(frame : frame) 
    self.backgroundColor = UIColor(red: 50/255, green: 50/255, blue: 50/255, alpha: 1.0) 


    label = UILabel(frame: CGRect(x: 12, y: 8, width: self.frame.size.width-90, height: 50)) 
    label.text = "Connection error please try again later!!" 
    label.textColor = UIColor.whiteColor() 
    label.numberOfLines = 0 
    label.font = UIFont.systemFontOfSize(14) 
    self.addSubview(label) 

    button = UIButton(frame: CGRect(x: self.frame.size.width-87, y: 8, width: 86, height: 50)) 
    button.setTitle("OK", forState: UIControlState.Normal) 
    button.setTitleColor(UIColor(red: 76/255, green: 175/255, blue: 80/255, alpha: 1.0), forState: UIControlState.Normal) 
    button.addTarget(self, action: "hideSnackBar:", forControlEvents: UIControlEvents.TouchUpInside) 
    self.addSubview(button) 
} 

ve kullanmak: güncelleştirmek için bir işlev oluşturmak

snakeView.label.text = "hello" 

Ama genelde i 'll:

let snakeView = snake(frame: CGRectMake(0 ,self.view.frame.size.height-66, self.view.frame.size.width, 66))) 

ve snakeview için veri ayarlamak görünüm verileri:

func updateData(title:String){ 
    self.label.text = title 
} 

ve ihtiyaç olduğunda diyoruz:

snake.updateData("hello") 

P/s: xib kullanırsanız şunları yapmalısınız init yerine awakeFromNib uygulamaktır. i görünümü kullanmak gerektiğinde etiket için bir özelliği ayarlamak gerekiyorsa, nasıl

let snakeView = NSBundle.mainBundle().loadNibNamed("snakeView", owner: nil, options: nil)[0] as snakeView 
+0

Eh harika ama bir soru daha: Ve xib ile yılan (: "snakeView" xib için ayarı kimliği unutmayın) oluşturmak bu mümkün ? Bir ayarlayıcıya ihtiyacım var ama bana bir örnek gösterebilir misin? –

+0

Gönderdiğim mesajda –

+0

@Nguyen Hoan bir ders yerine, bu kodu bir yapıya nasıl atacaktım? –

İlgili konular