从它自己的 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 创建子类的步骤是啥? [复制]

将子类 UIView 添加到具有自动布局约束的 Nib

将 UIView 作为 SubView 添加到自定义类、UIView 的子类、Swift

子类 UIView 不显示添加到它的 UIImageViews

将多个 UIImageViews 添加到子类 UIView

自定义 UIView 子类添加 nib 子视图