Я хочу создать UIButton, похожий на UIBackBarButtonItem (со стрелкой, указывающей влево для стека навигации. Я бы предпочел сделать это без использования изображения, если это возможно, потому что кнопка будет иметь разный размер в зависимости от телефона). ориентация.
Есть ли способ активировать этот эффект в коде? Моя идея заключалась в том, чтобы каким-то образом использовать CALayer кнопки.
Спасибо!
РЕДАКТИРОВАТЬ
Я пытаюсь воспользоваться советом @Deepak, но столкнулся с проблемой. Я хочу, чтобы правая сторона кнопки выглядела как [UIBezierPath bezierPathWithRoundedRect:rect angleRadius:4], а левая сторона выглядела как стрелка. Я попытался сделать это с помощью метода addQuadCurveToPoint:controlPoint.
Я использую угол прямоугольника в качестве контрольной точки, но путь не изгибается, как я ожидаю. Он по-прежнему загнан в угол, как если бы я использовал только метод addLineToPoint:. Мой код ниже.
float radius = 4.0;
UIBezierPath *path = [UIBezierPath bezierPath];
CGPoint startPoint = CGPointMake(rect.size.width/5.0, 0);
CGPoint pointBeforeTopCurve = CGPointMake(rect.size.width - radius, 0);
CGPoint topRightCorner = CGPointMake(rect.size.width, 0);
CGPoint pointAfterTopCurve = CGPointMake(rect.size.width, 0.0-radius);
CGPoint pointBeforeBottomCurve = CGPointMake(rect.size.width, rect.size.height-radius);
CGPoint bottomRightCorner = CGPointMake(rect.size.width, rect.size.height);
CGPoint pointAfterBottomCurve = CGPointMake(rect.size.width - radius, rect.size.height);
CGPoint pointBeforeArrow = CGPointMake(rect.size.width/5.0, rect.size.height);
CGPoint arrowPoint = CGPointMake(0, rect.size.height/2.0);
[path moveToPoint:pointBeforeTopCurve];
[path addQuadCurveToPoint:pointAfterTopCurve controlPoint:topRightCorner];
[path addLineToPoint:pointBeforeBottomCurve];
[path addQuadCurveToPoint:pointAfterBottomCurve controlPoint:bottomRightCorner];
[path addLineToPoint:pointBeforeArrow];
[path addLineToPoint:arrowPoint];
[path addLineToPoint:startPoint];