如何以编程方式添加Button和label之间的垂直对齐方式

时间:2017-03-23 05:17:56

标签: swift uitableview uibutton uilabel ios-autolayout

而是创建一个Xib文件并将其加载到tableview中。我正在Header视图中创建一个标签和按钮。

var btnTimeZone =  UIButton(type: .Custom)
 override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    self.btnTimeZone.titleLabel?.font = UIFont.boldSystemFontOfSize(14.0)
    self.btnTimeZone.backgroundColor = UIColor.clearColor()
    self.btnTimeZone.setTitleColor(UIColor.blackColor(), forState: .Normal)
    self.btnTimeZone.addTarget(self, action: #selector(self.selectClicked), forControlEvents: UIControlEvents.TouchUpInside)
}
 override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {


    let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 150))
    headerView.layer.borderWidth = 2
    headerView.layer.borderColor = UIColor.whiteColor().CGColor
    headerView.backgroundColor = ClientConfiguration.primaryUIColor()

    let myLabel = UILabel()
    myLabel.frame = CGRectMake(0, 0, tableView.frame.width - 70, 30)
    myLabel.font = UIFont.boldSystemFontOfSize(10)
    myLabel.backgroundColor =  ClientConfiguration.primaryUIColor()
    myLabel.textColor = UIColor.whiteColor()
    myLabel.textAlignment = .Left
    myLabel.text = "please Select your Time Zone"
    let frame = CGRectMake(0, 0,headerView.frame.width , 50)
    self.btnTimeZone.frame = frame
    headerView.addSubview(myLabel)
    headerView.addSubview(self.btnTimeZone)
    return headerView
}

我想在标题视图中的标签上方按钮,但我不能这样做.. ?? 我怎么能这样做.. ??

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容通过代码添加布局约束:

let top = NSLayoutConstraint(item:myLabel, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem:headerView, attribute: NSLayoutAttribute.top, multiplier:1.0, constant:0)
headerView.addConstraint(top)

当然问题在于单独一个约束可能还不够,你需要添加其他约束来控制标签和按钮之间的间距,并控制元素的水平间距。