给 UIView 添加多个子层只会显示一个

Posted

技术标签:

【中文标题】给 UIView 添加多个子层只会显示一个【英文标题】:Adding multiple sublayers to UIView will only display one 【发布时间】:2015-08-31 02:57:52 【问题描述】:

尝试为我的登录系统添加底部边框,我使用了以下代码:

var bottomBorder = CALayer()
bottomBorder.frame = CGRectMake(0.0, userEmailAddressTextField.frame.size.height - 1, userEmailAddressTextField.frame.size.width, 1.0)
bottomBorder.backgroundColor = UIColor.blackColor().CGColor
userEmailAddressTextField.layer.addSublayer(bottomBorder)

我也在尝试对我的密码文本字段执行此操作。我使用了多种技术,但似乎都没有奏效。

第一次尝试:再次添加相同的代码,这只会显示第二个栏的底部边框。

第二次尝试:我尝试了同样的事情,但将不同的变量设置为 bottomBordertwo,然后复制代码,但这也不起作用。有什么解决办法吗?

【问题讨论】:

你的 textField 是 IBoutlet 还是以编程方式创建的? 【参考方案1】:

创建一个通用函数

func addBottomLayerToTheView(view:UIView)

    var bottomBorder = CALayer()
    bottomBorder.frame = CGRectMake(0.0, view.frame.size.height - 1, view.frame.size.width, 1.0)
    bottomBorder.backgroundColor = UIColor.blackColor().CGColor
    view.layer.addSublayer(bottomBorder)

在创建文本字段或任何其他需要底层的视图后调用此函数,例如:

viewDidLoad()

addBottomLayerToTheView(textField)

addBottomLayerToTheView(textField2)

addBottomLayerToTheView(anyView)

【讨论】:

以上是关于给 UIView 添加多个子层只会显示一个的主要内容,如果未能解决你的问题,请参考以下文章

添加多个子视图的最佳方法 UIViewControllers

在ios中添加多个子视图

我们可以在 iOS 中同时向一个窗口添加多个子视图吗?

Oracle Sql:如何在 sql 中添加多个子总计?

delphi 一个窗体添加多组单选框问题

iOS 分类:按顺序添加视图