Можно ли добавить границу только поверх UIView, если да, то как это сделать?
Добавьте только верхнюю границу в UIView с Quartzcore/layer?
Ответ 1
Я нашел решение для меня, вот трюки:
CGSize mainViewSize = self.view.bounds.size;
CGFloat borderWidth = 1;
UIColor *borderColor = [UIColor colorWithRed:37.0/255 green:38.0/255 blue:39.0/255 alpha:1.0];
UIView *topView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, mainViewSize.width, borderWidth)];
topView.opaque = YES;
topView.backgroundColor = borderColor;
topView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
[self.view addSubview:topView];
Ответ 2
Я просто тестирую Blow несколько строк кода, и он работает очень хорошо, просто протестируйте его в своем проекте. надеюсь, что вы легко получите свое решение.
Зачем создавать новый просмотр и добавлять его в существующий вид...? Для этой задачи просто создайте один CALayer и добавьте его в существующий слой UIView следующим образом: -
#import <QuartzCore/QuartzCore.h>
- (void)viewDidLoad
{
CALayer *TopBorder = [CALayer layer];
TopBorder.frame = CGRectMake(0.0f, 0.0f, myview.frame.size.width, 3.0f);
TopBorder.backgroundColor = [UIColor redColor].CGColor;
[myview.layer addSublayer:TopBorder];
[super viewDidLoad];
}
и его вывод: -
Ответ 3
Ответ GilbertOOI в Swift 2:
let topBorder: CALayer = CALayer()
topBorder.frame = CGRectMake(0.0, 0.0, myView.frame.size.width, 3.0)
topBorder.backgroundColor = UIColor.redColor().CGColor
myView.layer.addSublayer(topBorder)
Ответ 4
Здесь категория UIView, которая позволяет вам добавить границу с обратным или обратным просмотром на любой стороне UIView: UIView + Borders
Ответ 5
Я создал этот простой подкласс UIView, чтобы он работал в Interface Builder и работал с ограничениями: https://github.com/natrosoft/NAUIViewWithBorders
Здесь мое сообщение в блоге об этом: http://natrosoft.com/?p=55
- В основном просто запустите UIView в Interface Builder и измените его тип класса на NAUIViewWithBorders.
- Тогда в вашем VC viewDidLoad сделайте что-то вроде:
/* For a top border only ———————————————- */
self.myBorderView.borderColorTop = [UIColor redColor];
self.myBorderView..borderWidthsAll = 1.0f;
/* For borders with different colors and widths ————————— */
self.myBorderView.borderWidths = UIEdgeInsetsMake(2.0, 4.0, 6.0, 8.0);
self.myBorderView.borderColorTop = [UIColor blueColor];
self.myBorderView.borderColorRight = [UIColor redColor];
self.myBorderView.borderColorBottom = [UIColor greenColor];
self.myBorderView.borderColorLeft = [UIColor darkGrayColor];
Здесь прямая ссылка на файл .m, чтобы вы могли увидеть реализацию: NAUIViewWithBorders.m
> Существует также демонстрационный проект.
Ответ 6
remus 'ответ в Obj-C:
CALayer *topBorder = [CALayer new];
topBorder.frame = CGRectMake(0.0, 0.0, self.frame.size.width, 3.0);
topBorder.backgroundColor = [UIColor redColor].CGColor;
[myView.layer addSublayer:topBorder];
Ответ 7
Ответ GilbertOOI в Swift 4:
let topBorder: CALayer = CALayer()
topBorder.frame = CGRect(x: 0, y: 0, width: myView.frame.size.width, height: 1)
topBorder.backgroundColor = UIColor.purple.cgColor
myView.layer.addSublayer(topBorder)