Первое использование 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;
И снимок экрана:
Обратите внимание, что отслеживание касания будет по-прежнему действовать так, как если бы кнопка была квадратной, это может не иметь значения, но, тем не менее, стоит отметить. –