2015-05-19 3 views
2

Я действительно копаю кнопку нижнего правого угла IFTTT, как показано на рисунке (внизу справа).Как нарисовать треугольную форму UIButton

enter image description here

Я пытался играть с CGContext и UIBezierPath, чтобы соответствовать эффект, но я просто не знаю достаточно, чтобы получить это право не знать. У кого-нибудь есть мысли/код о том, как это сделать?

Спасибо!

ответ

4

Первое использование CAShapeLayer для создания маски

CAShapeLayer * shapeLayer = [CAShapeLayer layer]; 
//Use these to create path 
CGMutablePathRef path = CGPathCreateMutable(); 
// CGPathMoveToPoint 
// CGPathAddLines 
shapeLayer.path = path; 

Затем установите маску вашей кнопки

yourbutton.layer.mask = shapeLayer 
yourbutton.masksToBounds = YES; 

Пример зрения

CAShapeLayer * shapeLayer = [CAShapeLayer layer]; 
CGMutablePathRef path = CGPathCreateMutable(); 
CGPathMoveToPoint(path, nil, 0, CGRectGetHeight(self.testview.frame)); 
CGPathAddLineToPoint(path, nil, CGRectGetWidth(self.testview.frame), 0); 
CGPathAddLineToPoint(path, nil, CGRectGetWidth(self.testview.frame), CGRectGetHeight(self.testview.frame)); 
CGPathCloseSubpath(path); 
shapeLayer.path = path; 
self.testview.layer.masksToBounds = YES; 
self.testview.layer.mask = shapeLayer; 

И снимок экрана:

enter image description here

+2

Обратите внимание, что отслеживание касания будет по-прежнему действовать так, как если бы кнопка была квадратной, это может не иметь значения, но, тем не менее, стоит отметить. –

0

Сделайте квадратную кнопку, поместите в нее изображение треугольника. Не будет ли это работать? Чтобы сделать иллюзию еще лучше, нарисуйте отдельные изображения для события onclick() и ontouch(). Отключите кнопку по умолчанию и нажмите анимацию кликов, чтобы она выглядела реальной.

+0

Лично я не программист iOS, поэтому я не знаю основных API-интерфейсов, но когда мне нужна кнопка с разными формами, это то, что я обычно делаю. –

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