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

Posted

技术标签:

【中文标题】在 iCarousel 控件中在图像上显示文本【英文标题】:Displaying text over image in iCarousel control 【发布时间】:2016-07-09 02:54:40 【问题描述】:

我正在尝试将文本放在 UIImageView 顶部的 iCarousel 控件中。有一个示例可以做到这一点,我使用了与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 里面有它应该有的文本,所以我知道这没关系。任何关于我的代码可能有问题的想法将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

您需要像这样在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!  

希望这会对您有所帮助。

【讨论】:

当我添加这行代码时,它摆脱了图片,只显示了文字。很高兴知道文字在那里,但我真的很想看到图片和文字。感谢您尝试提供帮助。 我想通了。我必须将标签的边界更改为小于 UIImageView 的矩形。这样就解决了问题。在您的建议和缩小标签边界的 CGRect 大小之间,我得到了它的工作。 =) 乐于助人..:)【参考方案2】:

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

 name = UILabel(frame:itemView.bounds)

用下面的行替换它

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

【讨论】:

以上是关于在 iCarousel 控件中在图像上显示文本的主要内容,如果未能解决你的问题,请参考以下文章

在 devkit pro 中在图像上显示文本时屏幕顶部出现垃圾

为啥当我切换到上一个屏幕时,iCarousel 视图中的图像会显示在上一个屏幕中?

无法从 web url 向 iCarousel 显示图像

labview中在运行窗口中怎样显示文本

iCarousel 不显示我的图像目标 C

在 iCarousel 的 iCarouselTypeRotary 视图中隐藏图像