Ios 创建自定义IBDesignable UITextField
我正在尝试创建自定义UITextField并设置自定义bordercolor。我还为borderColor创建了一个IBInspectable属性,如果我使用set和get方法,我可以使用Storyboard设置它 现在我想做的是有一个预定义的边框颜色值(这是默认值),所以我尝试调用didSet方法并在那里进行设置。我不知道该怎么做。默认值不起作用,如果我在故事板中的以下行中导入,则会出现错误-Ios 创建自定义IBDesignable UITextField,ios,swift3,Ios,Swift3,我正在尝试创建自定义UITextField并设置自定义bordercolor。我还为borderColor创建了一个IBInspectable属性,如果我使用set和get方法,我可以使用Storyboard设置它 现在我想做的是有一个预定义的边框颜色值(这是默认值),所以我尝试调用didSet方法并在那里进行设置。我不知道该怎么做。默认值不起作用,如果我在故事板中的以下行中导入,则会出现错误- self.layer.borderColor=(UIColor.KGColorPalette.ent
self.layer.borderColor=(UIColor.KGColorPalette.entryBoxBorderColor as! CGColor)
故事板中出现错误
错误:IB可指定项:未能更新自动布局状态:代理崩溃
代码:
@IBDesignable class KGIBDesignableTextField: UITextField {
@IBInspectable var borderColor: UIColor = UIColor.KGColorPalette.entryBoxBorderColor {
didSet {
setup()
}
}
override func awakeFromNib() {
super.awakeFromNib()
setup()
}
override func layoutSubviews() {
super.layoutSubviews()
setup()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setup()
}
func setup(){
textColor = UIColor.KGColorPalette.textEntryFontColor
self.layer.borderColor=(UIColor.KGColorPalette.entryBoxBorderColor as! CGColor)
backgroundColor=UIColor.KGColorPalette.entryBoxShadeFillColor
font = UIFont(name: "Helvetica", size: 14)
textAlignment = .left
}
}
如果有帮助的话,我也检查了我的xcode崩溃日志,它给出了以下错误-
线程0崩溃:
0 com.kapsymtech.ios.KGCustomUIComponentsTarget 0x0000000116932dd8\u TFC26KGCustomUIComponentsTarget23KGIBDesignableTextField5setupfT\u T\u152(KGIBDesignableTextField.swift:65)
1 com.kapsymtech.ios.KGCustomUIComponentsTarget 0x0000000116932acb\u TFC26KGCustomUIComponentsTarget23KGIBDesignableTextFieldcfT5frameVSC6CGRect\u S0\u331(KGIBDesignableTextField.swift:56)
2 com.kapsymtech.ios.KGCustomUIComponentsTarget 0x0000000116932ba7\u TToFC26KGCustomUIComponentsTarget23KGIBDesignableTextFieldcfT5frameVSC6CGRect\u S0\u71
3 com.apple.IBCocoaTouchToolFoundation 0x0000000107a8fb23-[UIView(ibcoatouchtoolsintegration)initWithMarshalledValues:orderedKeys:ignoredKeys:globalMarshallingContext:+131
4 com.apple.IBCocoaTouchToolFoundation 0x0000000107aaf51c-[ibcoatouchtoolObjectPackageInitWithRequest:globalMarshallingContext:+3100
5 com.apple.ibcoatouchtoolFoundation 0x0000000107aae143+[ibcoatouchtoolobjectpackage objectPackageFromRequest:+67
6 com.apple.ibcoatouchtoolFoundation 0x0000000107ab1311+[ibcoatouchtoolobjectpackage decodwithbinaryunarchiver:+106
7 com.apple.dt.IBFoundation 0x000000010a493aa3-[IBBinaryUnarchiver decodeObject]+112
8 com.apple.dt.IBFoundation 0x000000010a51f724-[ibObjectBasedMarshallingRequestInitwithBinaryUnarchiver:+135
9 com.apple.dt.IBAutolayoutFoundation 0x000000010a3d73bb-[iBautolayoutOperationMarshallingRequestInitwithBinaryUnarchiver:+59
10 com.apple.dt.IBFoundation 0x000000010a48b335+[NSObject(ibbinaryarchingadditions)decodeWithBinaryUnarchiver:+65
11 com.apple.dt.IBFoundation 0x000000010a493aa3-[IBBinaryUnarchiver decodeObject]+112
12 com.apple.dt.IBFoundation 0x000000010a559ffa-[ibmessagereceivechanneldeliversessage:toTarget:withArguments:context:result:+393
13 com.apple.dt.IBFoundation 0x000000010a559a6588-[IBMessageReceiveChannel runBlockingReceiveLoopNotifyingQueue:notifyingTarget:context:][u block\u invoke+120
14 libdispatch.dylib 0x000000010dbe3792调度客户端调用+8
15 libdispatch.dylib 0x000000010dbcc4e0 _dispatch_barrier_sync_f_slow_invoke+292
16 libdispatch.dylib 0x000000010dbe3792调度客户端调用+8
17 libdispatch.dylib 0x000000010dbcb247_dispatch_main_queue_callback_4CF+1041
18 com.apple.CoreFoundation 0x000000010bac1909\uu CFRUNLOOP\u正在为主调度队列提供服务+9
19 com.apple.CoreFoundation 0x000000010ba87ae4__CFRunLoopRun+2164
20 com.apple.CoreFoundation 0x000000010ba87016 CFRunLoopRunSpecific+406
21 COM.Apple .Fund 0x000 000 010A8F3600 - [ NSRunCURLL(NSRunLob)RunMy:BeFueDATe:] + 274
22 com.apple.dt.IBFoundation 0x000000010a525bbc-[IBAbstractPlatformTool startServingReceiveChannel:+465
23 com.apple.dt.IBFoundation 0x000000010a525d85-[IBAbstractPlatformTool startServingWriteDescriptor:readDescriptor:+119
24 com.apple.dt.IBFoundation 0x000000010a52689e+[IBAbstractPlatformTool main]+1186
25 IBdesignableSagentCoCoCoCoTouch 0x0000000107a04ba7干管+34
26 libdyld.dylib 0x000000010dc2c65d启动+1
将此行更改为:
self.layer.borderColor = UIColor.KGColorPalette.entryBoxBorderColor.cgColor
发件人:
您不能将
UIColor
键入CGColor
。这样的强制强制转换会使应用程序崩溃。谢谢,这减少了编译时错误。这是我这边的一个愚蠢的错误。虽然我还有一个问题。当我运行应用程序时,我在UI上看不到它:(很高兴知道我的答案修复了崩溃。你可能需要发布一个关于这个新问题的更详细的问题。可能还要在这个问题中添加一些屏幕截图。谢谢你的帮助。我会先尝试自己解决问题,然后再发布一个新的:)谢谢你接受。从您的代码中,我看不出任何不显示颜色的原因。你是否尝试过硬编码颜色,如“红色”或“蓝色”,然后它会出现?当然,先尝试解决你自己的问题,然后发布一个带有屏幕截图的问题。我们可以查一下。
self.layer.borderColor=(UIColor.KGColorPalette.entryBoxBorderColor as! CGColor)