Ios Swift:以编程方式附加自定义UIView
这是一个接近复制的另一个,但我遇到了一些问题,它使它看起来像我没有做正确的。作为参考,我从一个自定义类和xib文件(只需几分钟:)中遵循了这一点,将其拖动到故事板的另一个视图中(如视频结尾所示)一点问题都没有 然而,就我的情况而言,我试图以编程方式调用我的自定义类,并将其作为子视图添加到我的Ios Swift:以编程方式附加自定义UIView,ios,iphone,xcode,swift,uiview,Ios,Iphone,Xcode,Swift,Uiview,这是一个接近复制的另一个,但我遇到了一些问题,它使它看起来像我没有做正确的。作为参考,我从一个自定义类和xib文件(只需几分钟:)中遵循了这一点,将其拖动到故事板的另一个视图中(如视频结尾所示)一点问题都没有 然而,就我的情况而言,我试图以编程方式调用我的自定义类,并将其作为子视图添加到我的ScrollView实例之一 class MainController: UIViewController { @IBOutlet weak var scrollView: UIScrollView
ScrollView
实例之一
class MainController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
first.directionalLockEnabled = true
first.pagingEnabled = true
var item = MyCustomView(frame: CGRectMake(0, 0, self.view.frame.width, 200))
self.scrollView.addSubview(item)
}
}
我的自定义视图如下所示:
import UIKit
class MyCustomView: UIView {
@IBOutlet var view: UIView!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var dressTitle: UILabel!
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
NSBundle.mainBundle().loadNibNamed("MyCustomView", owner: self, options: nil)
self.view.frame = bounds
self.addSubview(self.view)
}
override init(frame: CGRect) {
super.init(frame: frame)
}
}
还有一个相关的.xib
文件,其中包含标签和图像
所以我的问题是,我的视图从未出现在我的滚动视图中。我已经仔细检查了滚动视图上的约束。。。我甚至可以添加简单的
UIView
,带有明显可见的维度CGRectMake(0,0,100,100)
。。。什么也不给。我遗漏了什么?由于一些混乱,我将loadFromNib
方法复制到CustomView.swift
文件中的第二个初始值设定项,从而意外地使它工作起来。正如原始问题中发布的视频教程所示,它只显示了一个初始值设定项。。。。但是在我的例子中,我不得不向init(frame)
添加额外的代码。例如:
// once with a NSCoder
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
NSBundle.mainBundle().loadNibNamed("Item", owner: self, options: nil)
self.view.frame = bounds
self.addSubview(self.view)
}
// for this to work programmatically I had to do the same...
override init(frame: CGRect) {
super.init(frame: frame)
NSBundle.mainBundle().loadNibNamed("Item", owner: self, options: nil)
self.view.frame = bounds
self.addSubview(self.view)
}
你能在ViewDidDisplay上打印更多信息吗??例如,self.view.frame和self.scrollView.frame还有self.scrollView.subview.count
customView=MyCustomView(frame:CGRectZero(顶部:0,左侧:0,宽度:200,高度:50)
像这样试试是的,我也试过了,以防万一:)。我的主要self.view.frame
是(0.0,0.0,320.0568.0)
,而self.scrollView.frame
是(0.0,11.0,320.0,200.0)
@ded检查一下:@AshishKakkad如果你不介意的话,请仔细阅读我的问题-我已经在原始问题中引用了该视频作为我遵循的教程。