gpt4 book ai didi

ios - Swift - 以编程方式添加自定义 Xib View 作为 subview

转载 作者:行者123 更新时间:2023-11-30 13:06:15 34 4
gpt4 key购买 nike

我已经制作了一个自定义 xib,之前在 Storyboard中使用过,我只想创建自定义 View 调整大小的实例,然后将其作为 subview 添加到 uiscrollview 中。我尝试过在 View Controller 的 viewdidload 函数中使用这段代码

let cardView = CardView(coder: NSCoder())
cardView!.frame.size.width = 100
cardView!.frame.size.height = 100
scrollView.addSubview(cardView!)

但我收到此错误

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 的 swift 文件的代码

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
}

}

我没有使用自动布局,而是尝试简单地设置高度和宽度来测试从这两行手动添加 subview (也只是提醒一下,我是 iOS 开发的新手)

cardView!.frame.size.width = 100
cardView!.frame.size.height = 100

最佳答案

下面是我在使用自定义 XIB 进行 View 初始化时所使用的内容。

在 View 类(例如 CardView)中,代码如下。

class CardView: UIView {
@IBOutlet weak var cornerView: UIView!

func setupWithSuperView(superView: UIView) {
self.frame.size.width = 100
self.frame.size.height = 100
superView.addSubview(self)

cornerView = UIView(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
}
}

并且在调用此类进行初始化的地方,请使用它。

let cardView = NSBundle.mainBundle("CardView").loadNibNamed("", owner: nil, options: nil)[0] as! CardView
cardView.setupWithSuperView(scrollView)

尝试一次。但请确保 xib 文件的第一个 View 的类型为 CardView。我的意思是第一个 View 的类是 CardView。

关于ios - Swift - 以编程方式添加自定义 Xib View 作为 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39322772/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com