我制作了一个自定义xib,我之前在故事板中使用过,我只需创建自定义视图调整大小的实例,然后将其作为子视图添加到uiscrollview。在我的视图控制器Swift - 以编程方式将自定义Xib视图作为子视图添加
let cardView = CardView(coder: NSCoder())
cardView!.frame.size.width = 100
cardView!.frame.size.height = 100
scrollView.addSubview(cardView!)
的viewDidLoad中使用FUNC这个代码块伊夫尝试,但我得到这个错误
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -containsValueForKey: cannot be sent to an abstract object
of class NSCoder: Create a concrete instance!'
编辑: 这是连接到CardView迅速文件中的代码的.xib
import UIKit
class CardView: UIView {
@IBOutlet var view: UIView!
@IBOutlet weak var cornerView: UIView!
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
NSBundle.mainBundle().loadNibNamed("CardView", owner: self, options: nil)
self.addSubview(view)
view.frame = self.bounds
cornerView.layer.cornerRadius = 3
cornerView.layer.masksToBounds = true
view.layer.shadowOffset = CGSizeMake(1, 5);
view.layer.shadowRadius = 2;
view.layer.shadowOpacity = 0.2;
view.layer.masksToBounds = false
}
}
代替使用自动布局我试图简单地设置的高度和宽度,以测试从这些2行手动添加的子视图(也只是平视我是iOS开发新手)
cardView!.frame.size.width = 100
cardView!.frame.size.height = 100
你的问题有很多混乱。 1)我制作了一个定制的xib,我之前在故事板中使用过 - 如何制作自定义xib,我的意思是它带有.xib扩展名的单独文件,如果是这样的话,可以在storyboard中使用。我的意思是没有代码可以看出哪些是在某处使用xib的内容。 2)你没有使用自动布局约束3)你没有在你的代码形式的xib中初始化任何东西。我会说要么编辑帖子,并发布完整的代码,你正在使用这个特定的实现或一些图形,什么是你的目标,我可以建议最好的方式。 –
@MaheshAgrawala我刚刚对该帖子进行了编辑,希望能够帮助 – XvKnightvX
更改像这样的loadnib行。 'self.view = NSBundle.mainBundle()。loadNibNamed(“CardView”,owner:nil,options:nil)[0] as! UIView'并尝试一次 –