for*_*yez 274 iphone cocoa-touch objective-c interface-builder ios
我在检查员看到我可以改变背景颜色,但我也想改变边框颜色和厚度,这可能吗?
谢谢
Vla*_*mir 593
您需要使用视图的图层来设置边框属性.例如:
#import <QuartzCore/QuartzCore.h>
...
view.layer.borderColor = [UIColor redColor].CGColor;
view.layer.borderWidth = 3.0f;
Run Code Online (Sandbox Code Playgroud)
您还需要与QuartzCore.framework链接才能访问此功能.
MMa*_*gun 41
自Xcode的最新版本以来,有一个更好的解决方案:
随着@IBInspectable
您可以直接设置属性内的Attributes Inspector
.
这User Defined Runtime Attributes
为你设置:
设置此方法有两种方法:
选项1(在Storyboard中进行实时更新)
MyCustomView
.UIView
.@IBDesignable
(这使View更新生效).*@IBInspectable
MyCustomView
`
@IBDesignable
class MyCustomView: UIView {
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
layer.masksToBounds = cornerRadius > 0
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var borderColor: UIColor? {
didSet {
layer.borderColor = borderColor?.CGColor
}
}
}
Run Code Online (Sandbox Code Playgroud)
*@IBDesignable
仅在开头设置时有效class MyCustomView
选项2(自Swift 1.2起不起作用,见评论)
扩展你的UIView类:
extension UIView {
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
layer.masksToBounds = cornerRadius > 0
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var borderColor: UIColor? {
didSet {
layer.borderColor = borderColor?.CGColor
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您的默认视图总是包含那些额外的可编辑字段Attributes Inspector
.另一个优点是您不必MycustomView
每次都更改类.但是,这样做的一个缺点是,只有在运行应用程序时才会看到更改.
roh*_*tel 17
您还可以使用您希望的颜色创建边框.
view.layer.borderColor = [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1.0].CGColor;
Run Code Online (Sandbox Code Playgroud)
*r,g,b是0到255之间的值.
小智 10
在UIView扩展中添加以下@IBInspectables
extension UIView {
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth
}
set(newValue) {
layer.borderWidth = newValue
}
}
@IBInspectable var borderColor: UIColor? {
get {
if let color = layer.borderColor {
return UIColor(CGColor: color)
}
return nil
}
set(newValue) {
layer.borderColor = newValue?.CGColor
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您应该能够直接从"属性"检查器设置borderColor和borderWidth属性.见附图
当我使用Vladimir的CALayer解决方案时,在视图的顶部我有一个动画,就像模态UINavigationController解雇一样,我看到很多故障发生并且有绘图性能问题.
所以,实现这一目标的另一种方法是,制作一个自定义的UIView并实现如下drawRect
消息:但没有毛刺和性能损失:
- (void)drawRect:(CGRect)rect
{
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(contextRef, 1);
CGContextSetRGBStrokeColor(contextRef, 255.0, 255.0, 255.0, 1.0);
CGContextStrokeRect(contextRef, rect);
}
Run Code Online (Sandbox Code Playgroud)
试试这段代码:
view.layer.borderColor = [UIColor redColor].CGColor;
view.layer.borderWidth= 2.0;
[view setClipsToBounds:YES];
Run Code Online (Sandbox Code Playgroud)
小智 7
view.layer.borderWidth = 1.0
view.layer.borderColor = UIColor.lightGray.cgColor
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
200223 次 |
最近记录: |