2016-07-09 15 views
0

Ich versuche, Text über eine UIImageView innerhalb einer iCarousel Steuerung zu setzen. Es gibt eine Probe, die das tut, und ich den gleichen Code wie die func carousel(carousel: iCarousel, viewForItemAtIndex index: Int, reusingView view: UIView?) -> UIView, wobei der KörperAnzeige von Text über Bild in iCarousel Steuerelement

seine
{ 
    var itemView: UIImageView 
    var name: UILabel 
    if (view == nil) 
    { 
     itemView = UIImageView(frame:CGRectMake(0, 0, 250, 250)) 
     itemView.image = ShareData.sharedInstance.accounts[index].getPicture() 
     itemView.contentMode = .ScaleAspectFit 
     name = UILabel(frame:itemView.bounds) 
     name.backgroundColor = MyVariables.backgroundColor 
     name.textAlignment = .Center 
     name.textColor = MyVariables.outlineColor 
     name.font = name.font.fontWithSize(50) 
     name.tag = 1 
    } 
    else 
    { 
     itemView = view as! UIImageView; 
     name = itemView.viewWithTag(1) as! UILabel! 
    } 
    name.text = ShareData.sharedInstance.accounts[index].accountName 
    return itemView 
} 

Ich bin nicht sicher, was ich falsch mache. Offensichtlich sind die Variablen unterschiedlich, aber mein Code ist so identisch mit dem Code in der Probe, wie ich bekommen kann, ohne dass es tut, was ich will. Ich habe überprüft und die Variable .accountName hat den Text drin, den es haben soll, also weiß ich, dass das okay ist. Irgendwelche Ideen zu was mit meinem Code falsch sein könnte, würde sehr geschätzt werden. Vielen Dank.

Antwort

0

Sie benötigen UILabel als eine subview in UIImageView wie diese

if (view == nil) 
{ 
    itemView = UIImageView(frame:CGRectMake(0, 0, 250, 250)) 
    itemView.image = ShareData.sharedInstance.accounts[index].getPicture() 
    itemView.contentMode = .ScaleAspectFit 
    name = UILabel(frame:itemView.bounds) 
    name.backgroundColor = MyVariables.backgroundColor 
    name.textAlignment = .Center 
    name.textColor = MyVariables.outlineColor 
    name.font = name.font.fontWithSize(50) 
    name.tag = 1 

    //You forgot to add this name label in itemView 
    itemView.addSubview(name) 

} 
else 
{ 
    itemView = view as! UIImageView; 
    name = itemView.viewWithTag(1) as! UILabel! 
} 

Hoffnung hinzuzufügen, das wird Ihnen helfen.

+0

Wenn ich diese Codezeile hinzufügen, wird es von dem Bild zu befreien und zeigt nur den Text. Schön zu wissen, dass der Text da ist, aber ich würde gerne das Bild und den Text sehen. Danke, dass du versucht hast zu helfen. –

+0

Ich habe es herausgefunden. Ich muss die Grenzen für das Label ändern, um etwas kleiner als das Rect für das UIImageView zu sein. Das löst das Problem. Zwischen Ihrem Vorschlag und der Größe des CGRect für die Label-Grenzen habe ich es zum Laufen gebracht. =) –

+0

Gerne helfen .. :) –

0

Ich denke, dass Sie Label Breite und Höhe 0,0 bekommen.

name = UILabel(frame:itemView.bounds) 

es mit folgenden Zeilen ersetzen

name = UILabel(frame:CGRectMake(0, 0, 250, 250))