仅以编程方式创建边框底部

时间:2016-10-13 01:10:39

标签: swift uiview

我正在尝试创建仅底部边框。我一直在寻找答案,但似乎没有任何工作,Xcode根本没有给出任何错误。

这是我的边境代码

func addborder(let theobject:AnyObject){
    let object = theobject
    let border = CALayer()
    let width = CGFloat(2.0)
    border.borderColor = UIColor.darkGrayColor().CGColor
    border.frame = CGRect(x: 0, y: object.frame.size.height - width, width:  object.frame.size.width, height: object.frame.size.height)
    border.borderWidth = width
    object.layer.addSublayer(border)
    object.layer.masksToBounds = true
}

这是我以编程方式创建的UILabel的代码:

let jobtype1title = UILabel()
//jobtype1title.backgroundColor = UIColor.blackColor()
jobtype1title.backgroundColor = UIColor.blueColor()
jobtype1title.textColor = UIColor.whiteColor()
jobtype1title.widthAnchor.constraintEqualToConstant(scrollView.frame.size.width).active = true
jobtype1title.frame.size.height = 10
jobtype1title.textAlignment = .Center
addborder(jobtype1title)
scrollView.addSubview(jobtype1title)
jobtype1title.translatesAutoresizingMaskIntoConstraints = false
jobtype1title.centerXAnchor.constraintEqualToAnchor(scrollView.centerXAnchor).active = true
jobtype1title.topAnchor.constraintEqualToAnchor(scrollView.topAnchor, constant: 20).active = true

我正在将标签添加到Scrollview中,我正在尝试创建一个UIView(它将成为jobtype1title标签的边框)。我在标签上遗漏了什么吗?我尝试使用添加边框功能到我用故事板制作的另一个标签,它的工作原理。但是我以编程方式创建的标签却没有。我错过了什么?

1 个答案:

答案 0 :(得分:0)

  

我尝试使用添加边框功能到我用故事板制作的另一个标签,它的工作原理。但是这个我以编程方式创建的标签却没有。我错过了什么?

问题在于,addborder取决于其了解frame添加图层的object的操作:

border.frame = CGRect(x: 0, y: object.frame.size.height - width, width:  object.frame.size.width, height: object.frame.size.height)

您在故事板中创建的UILabel有一个框架,因此代码可以正常工作。

但是,当您致电jobtype1title时,您的addborder标签的没有有意义的框架;它将从约束和自动布局中获取其框架,此时尚未发生。在实际执行布局之前,标签基本上为零。因此,添加了边框,但您无法看到它,因为它的大小也是零。