2016-08-15 3 views
3

Я хочу знать, как сделать пунктирную линию быстрым следующим образом: - - - - - - - - вместо обычной прямой линии: ---------------- , Я знаю, что могу делать несколько строк, но для этого потребуется столько ненужного кода, если я могу просто написать его в 1 строке. Кстати, это должно быть в CoreGraphics.Как сделать пунктирную линию быстрым?

+0

Можете ли вы показать свой код создания текущей строки? – luk2302

+1

Поиск CGContextSetLineDash. –

ответ

9

Вы создаете пунктирные линии так же, как Objective-C, за исключением того, что вы будете использовать Swift.

Вот как это сделать с помощью UIBezierPath:

let path = UIBezierPath() 

let p0 = CGPointMake(CGRectGetMinX(self.bounds), 
      CGRectGetMidY(self.bounds)) 
path.moveToPoint(p0) 

let p1 = CGPointMake(CGRectGetMaxX(self.bounds), 
      CGRectGetMidY(self.bounds)) 
path.addLineToPoint(p1) 

let dashes: [ CGFloat ] = [ 16.0, 32.0 ] 
path.setLineDash(dashes, count: dashes.count, phase: 0.0) 

path.lineWidth = 8.0 
path.lineCapStyle = .Butt 
UIColor.magentaColor().set() 
path.stroke() 

Вот как рисовать пунктирные линии с помощью UIBezierPath:

let path = UIBezierPath() 

let p0 = CGPointMake(CGRectGetMinX(self.bounds), 
      CGRectGetMidY(self.bounds)) 
path.moveToPoint(p0) 

let p1 = CGPointMake(CGRectGetMaxX(self.bounds), 
      CGRectGetMidY(self.bounds)) 
path.addLineToPoint(p1) 

let dashes: [ CGFloat ] = [ 0.0, 16.0 ] 
path.setLineDash(dashes, count: dashes.count, phase: 0.0) 
path.lineWidth = 8.0 
path.lineCapStyle = .Round 
UIColor.magentaColor().set() 
path.stroke() 

Вот как рисовать пунктирные линии Использование CGContext:

let context: CGContext = UIGraphicsGetCurrentContext()! 

let p0 = CGPointMake(CGRectGetMinX(self.bounds), CGRectGetMidY(self.bounds)) 
CGContextMoveToPoint(context, p0.x, p0.y) 

let p1 = CGPointMake(CGRectGetMaxX(self.bounds), CGRectGetMidY(self.bounds)) 
CGContextAddLineToPoint(context, p1.x, p1.y) 

let dashes: [ CGFloat ] = [ 16.0, 32.0 ] 
CGContextSetLineDash(context, 0.0, dashes, dashes.count) 

CGContextSetLineWidth(context, 8.0) 
CGContextSetLineCap(context, .Butt) 
UIColor.blueColor().set() 
CGContextStrokePath(context) 
+0

Строка не приходит, когда я передаю две кнопки, связанные как параметр, Как рисовать пунктирную линию между двумя UIbutton. здесь пусть мой код путь = UIBezierPath() Пусть р0 = CGPointMake (CGRectGetMinX (self.button1.bounds), CGRectGetMidY (self.button1.bounds)) path.moveToPoint (p0) Пусть p1 = CGPointMake (CGRectGetMaxX (self.button2.bounds), CGRectGetMidY (self.button2.bounds)) path.addLineToPoint (p1) –

+0

скажите мне некоторое решение –

Смежные вопросы