在 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 中在图像上显示文本时屏幕顶部出现垃圾