UIToolbar с закругленными углами

Я хочу отобразить UIToolbar со скругленными углами сверху, как проще всего? панель инструментов не выровнена по верхнему краю окна; у него есть запас по всему периметру. Спасибо!


person rjobidon    schedule 06.07.2010    source источник


Ответы (2)


Очень простой.

Прежде всего - иметь переменную IBOutlet UIToolbar в вашем файле .h вашего контроллера представления. Например.

@interface TextFormattedViewController : UIViewController {
     IBOutlet UIToolbar *tBar;
}

Теперь в вашем .m файле вашего файла контроллера представления просто поместите следующий код, и он будет работать как волшебство для вас. Тем не менее, пожалуйста, добавьте комментарий, если есть какие-либо вопросы.

#import "TextFormattedViewController.h"
#import <QuartzCore/QuartzCore.h>
@implementation TextFormattedViewController
- (void)viewDidLoad {
    // following statement is must.
    tBar.clipsToBounds=YES;
    CALayer *l=tBar.layer;
    // set corner radious
    [l setCornerRadius:10];
    // to apply border on corners
    [l setBorderColor:[[UIColor redColor] CGColor]];
    // to apply set border width.
    [l setBorderWidth:5.0];
}
person Sagar R. Kothari    schedule 06.07.2010
comment
Спасибо, сахар, за отличное предложение! Для лучшего внешнего вида мы можем изменить только setCornerRadius (и удалить два последних вызова). Он производит красивые сглаженные круглые углы. Однако все четыре угла закруглены... - person rjobidon; 08.07.2010

Самый простой способ скруглить углы вида — использовать свойство cornerRadiusmasksToBounds) свойства CALayer. Однако при этом у вас есть только возможность скруглить все углы одинаково. Чтобы использовать это свойство, вы могли бы поместить UIToolbar в другой вид, который был выше панели инструментов, чтобы была закруглена только вершина. Это будет хорошо работать, если другой вид будет иметь закругленные нижние углы.

Самый простой способ замаскировать представление произвольной формы — установить для свойства mask элемента CALayer новое значение CAShapeLayer. В вашем случае создайте CGPath для CAShapeLayer, используя CGPathAddLineToPoint и CGPathAddArcToPoint или что-то подобное, чтобы скруглить только верхние углы.

person drawnonward    schedule 06.07.2010