在 iCarousel 控件中在图像上显示文本

Displaying text over image in iCarousel control

我试图将文本放在 iCarousel 控件内的 UIImageView 之上。有一个示例可以做到这一点,我使用了与 func carousel(carousel: iCarousel, viewForItemAtIndex index: Int, reusingView view: UIView?) -> UIView 相同的代码,正文是

{  
    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  
}  

我不确定我做错了什么。显然,变量是不同的,但我的代码与示例中的代码一样,我可以得到它没有做我想做的事情。我已经检查过,变量 .accountName 中包含它应该包含的文本,所以我知道这没问题。任何关于我的代码可能有什么问题的想法都将不胜感激。谢谢

您需要像这样在 UIImageView 中添加 UILabel 作为 subview

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!  
}

希望对您有所帮助。

我认为您得到的标签宽度和高度为 0,0。

 name = UILabel(frame:itemView.bounds)

将其替换为下行

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