Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建自定义IBDesignable UITextField_Ios_Swift3 - Fatal编程技术网

Ios 创建自定义IBDesignable UITextField

Ios 创建自定义IBDesignable UITextField,ios,swift3,Ios,Swift3,我正在尝试创建自定义UITextField并设置自定义bordercolor。我还为borderColor创建了一个IBInspectable属性,如果我使用set和get方法,我可以使用Storyboard设置它 现在我想做的是有一个预定义的边框颜色值(这是默认值),所以我尝试调用didSet方法并在那里进行设置。我不知道该怎么做。默认值不起作用,如果我在故事板中的以下行中导入,则会出现错误- self.layer.borderColor=(UIColor.KGColorPalette.ent

我正在尝试创建自定义UITextField并设置自定义bordercolor。我还为borderColor创建了一个IBInspectable属性,如果我使用set和get方法,我可以使用Storyboard设置它

现在我想做的是有一个预定义的边框颜色值(这是默认值),所以我尝试调用didSet方法并在那里进行设置。我不知道该怎么做。默认值不起作用,如果我在故事板中的以下行中导入,则会出现错误-

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)