【发布时间】:2016-06-23 09:57:31
【问题描述】:
我想在 UITableViewCell 内画一个圆圈。
为了使定位更容易,我决定使用界面生成器放置 UIView,设置约束,然后在此 UIView 内的代码中绘制圆圈。
但是,我在方形视图的中间绘制圆圈时遇到了问题。我想出了这个解决方案,但对我来说它看起来更像是解决方法。里面
tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
let xCoord = cell.pageBadgeView.center.x - cell.pageBadgeView.frame.origin.x
let yCoord = cell.pageBadgeView.center.y - cell.pageBadgeView.frame.origin.y
let circlePath = UIBezierPath(arcCenter: CGPoint(x: xCoord ,y: yCoord), radius: CGFloat(20), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)
pageBadgeView 基本上就是 UIView,它应该是绘制圆的参考点。
我的问题是:
为什么不用center.x和center.y,为什么我要减去center和origin的值才能得到中间坐标?
【问题讨论】:
-
如果您只是想要一个圆形视图,您可以尝试使用
cornerRadious和UIView -
是的,这是另一种方法,我的问题更多的是好奇,为什么我必须减去中心和原点才能真正得到中心?
-
@DCDC,这是因为在执行代码时,在运行时,视图在单元格的原点(超级视图)初始化。它们仅在编译后以指定的坐标绘制。请参阅我的答案以获得更清洁的方法。或者您必须在 arccenter 中硬编码 pageBadgeView 中心的值,这将起作用。
标签: ios swift uiview uibezierpath