Я не могу получить границу на своих кнопках в XCode 5, не устанавливая их непосредственно в коде. Возможно ли, что нет никакого способа сделать это на раскадровке без создания пользовательского фонового изображения?
Установите границу для UIButton в раскадровке
Ответ 1
Вы можете использовать путь ключа.
Например, радиус угла (layer.cornerRadius
), как описано на изображении.
Вы не сможете увидеть эффекты на раскадровке, потому что эти параметры оцениваются во время выполнения. Теперь вы можете использовать быструю категорию в UIView (код ниже рисунка) с помощью @IBInspectable
, чтобы показать результат в раскадровке (если вы используете категорию, используйте только cornerRadius
, а не layer.cornerRadius
в качестве ключевого пути.
extension UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
}
Ниже приведена категория из Peter DeWeese, которые позволяют использовать ключевой путь layer.borderUIColor
для установки цвета рамки.
CALayer + XibConfiguration.h:
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer(XibConfiguration)
// This assigns a CGColor to borderColor.
@property(nonatomic, assign) UIColor* borderUIColor;
@end
CALayer + XibConfiguration.m:
#import "CALayer+XibConfiguration.h"
@implementation CALayer(XibConfiguration)
-(void)setBorderUIColor:(UIColor*)color
{
self.borderColor = color.CGColor;
}
-(UIColor*)borderUIColor
{
return [UIColor colorWithCGColor:self.borderColor];
}
@end
Ответ 2
Swift 3 Если вы хотите увидеть результат в IB, когда используете IBInspectable, вам нужно расширить UIView и добавить свойства к этому классу, то есть
@IBDesignable class MyView: UIView {}
extension MyView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderColor: UIColor {
get {
return UIColor.init(cgColor: layer.borderColor!)
}
set {
layer.borderColor = newValue.cgColor
}
}
}
Ответ 3
Короткий ответ:
layer.cornerRadius = 10
layer.borderWidth = 1
layer.borderColor = UIColor.blue.cgColor
Длинный ответ:
Закругленные углы UIButton
customUIView.layer.cornerRadius = 10
Толщина границы
pcustomUIView.layer.borderWidth = 1
Цвет границы
customUIView.layer.borderColor = UIColor.blue.cgColor
Ответ 4
Вы можете использовать фрагмент кода, например:
self.addButton.layer.borderColor = [[UIColor greenColor] CGColor];
Обратите внимание: addButton
является IBOutlet.