2016-06-23 163 views
1

我想在UITableViewCell中畫一個圓圈。在UIView框架內繪製圓圈

爲了使定位更容易,我決定使用界面生成器放置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,我爲什麼要中心。減去和起源的值來獲得中點座標?

+2

東西,如果你只是想要一個圈子查看有沒有你'cornerRadious'用'UIView'嘗試 –

+0

是的,這是另一種方法,我的問題更多的是好奇心,爲什麼我必須減少中心和原點才能真正獲得中心? – DCDC

+0

@DCDC,這是因爲當代碼正在執行時,在運行時,視圖在單元格的原點(超級視圖)被初始化。只有在編譯之後,它們纔會在指定的座標系中繪製。看到我的答案更清潔的方法。或者你必須在arccenter中對pageBadgeView中心的值進行硬編碼,這將起作用。 –

回答

0

畫圓圈UIView。查看設置Corner radius of layer的屬性。爲圖層設置color

相應地快速修改您的代碼。

let yCoord = (cellheight - circleview height)/2 
1

嘗試是這樣的

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

嘗試像,讓你的看法圈

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

這是什麼問題? – Anny

+0

我猜這是因爲代碼沒有被註釋掉,而且變量的名稱與問題中的不相關。如果你在代碼中實例化它們可能會很好,但是現在它看起來像複製粘貼而不是用戶問題的詳細答案。 –