【问题标题】:How to add the vertical alignment between Button and label programmatically如何以编程方式在按钮和标签之间添加垂直对齐
【发布时间】:2017-03-23 05:17:55
【问题描述】:

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

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
}

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

【问题讨论】:

  • 如果你只支持 iOS 9+ 你可以使用锚点
  • 你能指导一下吗

标签: swift uitableview uibutton uilabel ios-autolayout


【解决方案1】:

您可以使用类似以下的方式通过代码添加布局约束:

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

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

【讨论】:

  • 它是否在按钮顶部添加标签..??
  • 这会将带有 0 填充的标签添加到 headerView。然后你必须添加另一个类似的布局约束来指定标签和按钮之间的间距。不过,您可以通过情节提要更轻松地完成这一切,因为您可以直观地指定所有内容:)
  • 你能和我分享整个项目吗?如果可以,或者如果您可以创建一个显示问题的快速示例应用程序,我可以查看并为您提供完成此操作所需的代码。
  • 是的,但是为了编写真正有效的代码并对其进行测试,我需要设置所有内容,然后从上面添加您的方法。恐怕我没有那么多时间 :) 但是如果您要提供工作代码,我可以快速检查发生了什么,添加修复并让您知道修复是什么。
猜你喜欢
  • 2015-12-25
  • 1970-01-01
  • 2016-06-24
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 2012-07-17
  • 2019-07-01
相关资源
最近更新 更多