UILabel 在圆形自定义 UIView 中不可见
Posted
技术标签:
【中文标题】UILabel 在圆形自定义 UIView 中不可见【英文标题】:UILabel not visible in circular custom UIView 【发布时间】:2015-07-27 08:48:45 【问题描述】:我的视图层次结构如下所示,我有一个 UITableViewController -> 静态单元格 -> UITableViewCell -> 自定义 UIView -> UILabel
我的目标是显示圆形个人资料图像视图,最后一个视图显示剩余图像数量的计数。
这就是我创建一个完美的圆形视图的方法
private func getCircularViewForPoint(point: CGPoint) -> UIView
var circularView: UIView = UIView(frame: CGRect(x: point.x, y: point.y, width: 30, height: 30))
circularView.layer.cornerRadius = 15
circularView.layer.masksToBounds = true
circularView.backgroundColor = UIColor.blueColor()
return circularView
所以现在我想在里面创建一个带有 UILabel 的视图
private func getCircularCountViewForPoint(point: CGPoint, maxAmount: Int) -> UIView
var circularView = self.getCircularViewForPoint(point)
circularView.backgroundColor = UIColor.brownColor()
var label: UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
label.center = circularView.center
label.text = "XY"
label.font = UIFont.systemFontOfSize(10.0)
label.textAlignment = NSTextAlignment.Center
// self.addSubview(label) // This works but label is now behind circularView of course
circularView.addSubview(label)
return circularView
结果看起来像这样,棕色视图中没有 UILabel。
circularView
的框架:
<UIView: 0x7feb28fd9d50; frame = (295 24.75; 30 30); clipsToBounds = YES; ...
label
的框架:
<UILabel: 0x7feb28ce33b0; frame = (295 24.75; 30 30); userInteractionEnabled = NO; ...
奇怪的是,如果我把这段代码放到操场上,它会像预期的那样工作,并且标签是可见的。
为了完整起见,我这样称呼这两个函数
for var i = 0; i < maxAmount-1; i++
self.addSubview(self.getCircularViewForPoint(CGPoint(x: xPos, y: yPos)))
xPos += size+offset
// add count view
var countView = self.getCircularCountViewForPoint(CGPoint(x: xPos, y: yPos), maxAmount: maxAmount)
self.addSubview(countView)
【问题讨论】:
移除 label.center = circularView.center 成功了,非常感谢。知道为什么会导致这个问题吗? circularView.center 给出了 circularView 相对于其 superView 的中心点,当您设置 labe.center 时,它的中心点移动到该点 我会说这应该没有错,因为您看到框架是相同的,因此它们的中心点也应该是相同的。 否,因为您将标签添加到圆形视图而不是主视图 【参考方案1】:因为您的目标是显示个人资料图片,所以我会尝试用图片替换棕色背景:
circularView.backgroundColor = UIColor(patternImage: UIImage(named: "profilepicturename.png")!)
对不起,我帮不上标签的事情
【讨论】:
是的,当然,这只是为了测试目的,我当然要用UIImageView
替换UIView
以上是关于UILabel 在圆形自定义 UIView 中不可见的主要内容,如果未能解决你的问题,请参考以下文章
我是不是需要在自定义 UIView 中使用单独的 UILabel 才能在 UITableViewCell 中有单独的 UILabel 行?
UIImageView 未调整为圆形,UILabel 未在 StackView 和自定义集合单元中调整大小
如何在 touchesBegan 上的自定义 UIView 中调整 UILabel 位置?