UIView bottom border? UIView bottom border? ios ios

UIView bottom border?


Instead of using a UIView, as @ImreKelényi suggests, you can use a CALayer:

// Add a bottomBorder.CALayer *bottomBorder = [CALayer layer];bottomBorder.frame = CGRectMake(0.0f, 43.0f, toScrollView.frame.size.width, 1.0f);bottomBorder.backgroundColor = [UIColor colorWithWhite:0.8f                                                  alpha:1.0f].CGColor;[toScrollView.layer addSublayer:bottomBorder];


Here is a more generalized Swift extension to create border for any UIView subclass:

import UIKitextension UIView {        func addTopBorderWithColor(color: UIColor, width: CGFloat) {    let border = CALayer()    border.backgroundColor = color.CGColor    border.frame = CGRectMake(0, 0, self.frame.size.width, width)    self.layer.addSublayer(border)  }  func addRightBorderWithColor(color: UIColor, width: CGFloat) {    let border = CALayer()    border.backgroundColor = color.CGColor    border.frame = CGRectMake(self.frame.size.width - width, 0, width, self.frame.size.height)    self.layer.addSublayer(border)  }  func addBottomBorderWithColor(color: UIColor, width: CGFloat) {    let border = CALayer()    border.backgroundColor = color.CGColor    border.frame = CGRectMake(0, self.frame.size.height - width, self.frame.size.width, width)    self.layer.addSublayer(border)  }  func addLeftBorderWithColor(color: UIColor, width: CGFloat) {    let border = CALayer()    border.backgroundColor = color.CGColor    border.frame = CGRectMake(0, 0, width, self.frame.size.height)    self.layer.addSublayer(border)  }}

Swift 3

extension UIView {    func addTopBorderWithColor(color: UIColor, width: CGFloat) {        let border = CALayer()        border.backgroundColor = color.cgColor        border.frame = CGRect(x: 0, y: 0, width: self.frame.size.width, height: width)        self.layer.addSublayer(border)    }    func addRightBorderWithColor(color: UIColor, width: CGFloat) {        let border = CALayer()        border.backgroundColor = color.cgColor        border.frame = CGRect(x: self.frame.size.width - width, y: 0, width: width, height: self.frame.size.height)        self.layer.addSublayer(border)    }    func addBottomBorderWithColor(color: UIColor, width: CGFloat) {        let border = CALayer()        border.backgroundColor = color.cgColor        border.frame = CGRect(x: 0, y: self.frame.size.height - width, width: self.frame.size.width, height: width)        self.layer.addSublayer(border)    }    func addLeftBorderWithColor(color: UIColor, width: CGFloat) {        let border = CALayer()        border.backgroundColor = color.cgColor        border.frame = CGRect(x: 0, y: 0, width: width, height: self.frame.size.height)        self.layer.addSublayer(border)    }}


Implemented in a category as below:

UIButton+Border.h:

@interface UIButton (Border)- (void)addBottomBorderWithColor: (UIColor *) color andWidth:(CGFloat) borderWidth;- (void)addLeftBorderWithColor: (UIColor *) color andWidth:(CGFloat) borderWidth;- (void)addRightBorderWithColor: (UIColor *) color andWidth:(CGFloat) borderWidth;- (void)addTopBorderWithColor: (UIColor *) color andWidth:(CGFloat) borderWidth;@end

UIButton+Border.m:

@implementation UIButton (Border)- (void)addTopBorderWithColor:(UIColor *)color andWidth:(CGFloat) borderWidth {    CALayer *border = [CALayer layer];    border.backgroundColor = color.CGColor;    border.frame = CGRectMake(0, 0, self.frame.size.width, borderWidth);    [self.layer addSublayer:border];}- (void)addBottomBorderWithColor:(UIColor *)color andWidth:(CGFloat) borderWidth {    CALayer *border = [CALayer layer];    border.backgroundColor = color.CGColor;    border.frame = CGRectMake(0, self.frame.size.height - borderWidth, self.frame.size.width, borderWidth);    [self.layer addSublayer:border];}- (void)addLeftBorderWithColor:(UIColor *)color andWidth:(CGFloat) borderWidth {    CALayer *border = [CALayer layer];    border.backgroundColor = color.CGColor;    border.frame = CGRectMake(0, 0, borderWidth, self.frame.size.height);    [self.layer addSublayer:border];}- (void)addRightBorderWithColor:(UIColor *)color andWidth:(CGFloat) borderWidth {    CALayer *border = [CALayer layer];    border.backgroundColor = color.CGColor;    border.frame = CGRectMake(self.frame.size.width - borderWidth, 0, borderWidth, self.frame.size.height);    [self.layer addSublayer:border];}@end