在UIView框架内绘制圆圈

时间:2016-06-23 09:57:31

标签: ios swift uiview uibezierpath

我想在UITableViewCell中画一个圆圈。

为了使定位更容易,我决定使用界面构建器设置UIView,设置约束,然后从这个UIView中的代码中绘制圆圈。

这应该是这样的: enter image description here

但是,我在方形视图中间绘制圆圈时出现问题。我想出了这个解决方案,但对我而言,它看起来更像是解决方法。里面

  

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的值来获得中间坐标?

3 个答案:

答案 0 :(得分:2)

尝试这样的事情

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) {

var someName = UIView()
var someNameRadius = 25.0
let cell = tableView.dequeueReusableCellWithIdentifier("experienceCell", forIndexPath: indexPath) as! YourCellClass

someName.backgroundColor = UIColor.clearColor()
someName.layer.borderWidth = 3.0
someName.layer.borderColor = UIColor.redColor().CGColor
someName.center = cell.contentView.center
someName.frame.size = CGSize(width: someNameRadius*2, height: someNameRadius*2)
someName.layer.cornerRadius = someNameRadius  // Note, this is half of the width of the view's width
cell.contentView.addSubView(someName)


return cell

}

答案 1 :(得分:0)

绘制圆圈UIView。设置View的Corner radius of layer属性。为图层设置color

相应地在swift中修改你的代码。

 let yCoord = (cellheight - circleview height)/2

答案 2 :(得分:-1)

尝试制作视角圈

_circleView.layer.cornerRadius = _circleView.frame.size.width/2;
_circleView.layer.borderColor = [UIColor redColor].CGColor;
_circleView.layer.borderWidth = 2;
_circleView.clipsToBounds = YES;