borderColor on any view(or UIView Subclass) could also be set using storyboard with a little bit of coding and this approach could be really handy if you're setting border color on multiple UI Objects.
Below are the steps how to achieve it,
- Create a category on CALayer class. Declare a property of type UIColor with a suitable name, I'll name it as borderUIColor .
- Write the setter and getter for this property.
- In the 'Setter' method just set the "borderColor" property of layer to the new colors CGColor value.
- In the 'Getter' method return UIColor with layer's borderColor.
P.S: Remember, Categories can't have stored properties. 'borderUIColor' is used as a calculated property, just as a reference to achieve what we're focusing on.
Please have a look at the below code sample;
Objective C:
Interface File:
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer (BorderProperties)
// This assigns a CGColor to borderColor.
@property (nonatomic, assign) UIColor* borderUIColor;
@end
Implementation File:
#import "CALayer+BorderProperties.h"
@implementation CALayer (BorderProperties)
- (void)setBorderUIColor:(UIColor *)color {
self.borderColor = color.CGColor;
}
- (UIColor *)borderUIColor {
return [UIColor colorWithCGColor:self.borderColor];
}
@end
Swift 2.0:
extension CALayer {
var borderUIColor: UIColor {
set {
self.borderColor = newValue.CGColor
}
get {
return UIColor(CGColor: self.borderColor!)
}
}
}
And finally go to your storyboard/XIB, follow the remaining steps;
- Click on the View object for which you want to set border Color.
- Click on "Identity Inspector"(3rd from Left) in "Utility"(Right side of the screen) panel.
- Under "User Defined Runtime Attributes", click on the "+" button to add a key path.
- Set the type of the key path to "Color".
- Enter the value for key path as "layer.borderUIColor". [Remember this should be the variable name you declared in category, not borderColor here it's borderUIColor].
- Finally chose whatever color you want.
You've to set layer.borderWidth property value to at least 1 to see the border color.
Build and Run.
Happy Coding. :)