从它自己的 UView 子类中添加 UIView 作为 SuperView 子视图
Posted
技术标签:
【中文标题】从它自己的 UView 子类中添加 UIView 作为 SuperView 子视图【英文标题】:Add UIView as SuperView subView from its own UView SubClass 【发布时间】:2015-06-02 14:28:56 【问题描述】:其实我觉得这个很简单,漏掉了什么。
我正在创建 UIView 的子类,而不是像这样从 ViewController 将其添加为子视图:
rateus = RateFrameWork(AppID: "asdasds", BackGroundColor: UIColor.blueColor())
self.addSubView(rateus)
我正在尝试从子类中添加它,这是我迄今为止尝试过的:
class RateFrameWork: UIView
1) 来自超级初始化编码器(剂量工作)
required init(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
superview?.addSubview(self)
2) 来自 init 方法(剂量工作)
init?(AppID: String!, BackGroundColor: UIColor!)
super.init(frame: CGRect(x: 0 , y: 0, width: UIScreen.mainScreen().bounds.size.width , height:UIScreen.mainScreen().bounds.size.height))
superview?.addSubview(self)
有什么建议吗? 如何将其添加为来自其自己的子类的子视图?
【问题讨论】:
【参考方案1】:你不能这样做,因为这与想法相矛盾。
视图没有superview,除非它被添加为子视图,并且视图不知道它会在什么情况下以及何时添加为子视图。
一些特殊视图(例如AlertView、ActionView)可以添加到keyWindow
,但你的视图不能。
【讨论】:
嘿。感谢您的回答!我听说我可以做类似 InitWithSuperVIew 的事情,你熟悉吗? 呃……我更喜欢使用showInView
而不是initWithSuperView
,就像UIActionSheet
一样
其实我不知道有什么区别。其中一种方法通过init进程将其添加到superView?
我认为不同之处在于showInView
由其超级视图调用。一个优点是它将被初始化但不可见。它的 superview 可以决定何时显示。
我在子类中使用了这个命令,或者当我声明对象时(例如在视图中确实加载了)以上是关于从它自己的 UView 子类中添加 UIView 作为 SuperView 子视图的主要内容,如果未能解决你的问题,请参考以下文章
将 UIView 作为 SubView 添加到自定义类、UIView 的子类、Swift