我製作了一個自定義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'並嘗試一次 –