以编程方式使表视图部分 header float/align 中的按钮正确 // Swift
make button in tableview section header float/align right programmatically // Swift
我试图在 TableView 的 header 部分中将 UIButton 浮动到右侧。
到目前为止,我只设法为一种屏幕尺寸添加了约束...
到目前为止,这是我的代码:
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
var headerFrame:CGRect = tableView.frame
let titelArr: NSArray = ["1", "2", "3", "4", "5", "6"]
var title = UILabel(frame: CGRectMake(10, 10, 100, 30))
title.font = UIFont.boldSystemFontOfSize(20.0)
title.text = titelArr.objectAtIndex(section) as? String
title.textColor = UIColor.whiteColor()
var headBttn:UIButton = UIButton.buttonWithType(UIButtonType.ContactAdd) as UIButton
headBttn.frame = CGRectMake(320, 10, 30, 30)
headBttn.enabled = true
headBttn.titleLabel?.text = title.text
headBttn.tag = titelArr.indexOfObject(titelArr.objectAtIndex(section))
headBttn.addTarget(self, action: "addItem:", forControlEvents: UIControlEvents.TouchUpInside)
var headerView:UIView = UIView(frame: CGRectMake(0, 0, headerFrame.size.width, headerFrame.size.height))
headerView.backgroundColor = UIColor(red: 108/255, green: 185/255, blue: 0/255, alpha: 0.9)
headerView.addSubview(title)
headerView.addSubview(headBttn)
return headerView
}
如何让按钮正确浮动?其余的约束可以保持原样...
感谢您的帮助!
//七月
感谢@rdelmar,如果有人感兴趣,这里的一些研究就是答案;-)
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
var headerFrame = tableView.frame
var headerView:UIView = UIView(frame: CGRectMake(0, 0, headerFrame.size.width, headerFrame.size.height))
headerView.backgroundColor = UIColor(red: 108/255, green: 185/255, blue: 0/255, alpha: 0.9)
var title = UILabel()
title.setTranslatesAutoresizingMaskIntoConstraints(false)
title.font = UIFont.boldSystemFontOfSize(20.0)
title.text = titelArr.objectAtIndex(section) as? String
title.textColor = UIColor.whiteColor()
headerView.addSubview(title)
var headBttn:UIButton = UIButton.buttonWithType(UIButtonType.System) as UIButton
headBttn.setTranslatesAutoresizingMaskIntoConstraints(false)
headBttn.enabled = true
headBttn.titleLabel?.text = title.text
headBttn.tag = titelArr.indexOfObject(titelArr.objectAtIndex(section))
headBttn.addTarget(self, action: "addItem:", forControlEvents: UIControlEvents.TouchUpInside)
headerView.addSubview(headBttn)
var viewsDict = Dictionary <String, UIView>()
viewsDict["title"] = title
viewsDict["headBttn"] = headBttn
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"H:|-10-[title]-[headBttn]-15-|", options: nil, metrics: nil, views: viewsDict))
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:|-[title]-|", options: nil, metrics: nil, views: viewsDict))
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:|-[headBttn]-|", options: nil, metrics: nil, views: viewsDict))
return headerView
}
感谢@Seb 分享惊人的答案。由于 Swift 中进行了一些更改,这会影响您的回答。我将在 Swift 3 和 4 中提供如何执行相同操作的示例:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: tableView.frame.size.height))
headerView.backgroundColor = UIColor.lightGray
let title = UILabel()
title.translatesAutoresizingMaskIntoConstraints = false
title.text = "myTitle"
headerView.addSubview(title)
let button = UIButton(type: .system)
button.translatesAutoresizingMaskIntoConstraints = false
button.setTitle("myButton", for: .normal)
headerView.addSubview(button)
var headerViews = Dictionary<String, UIView>()
headerViews["title"] = title
headerViews["button"] = button
headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-10-[title]-[button]-15-|", options: [], metrics: nil, views: headerViews))
headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[title]-|", options: [], metrics: nil, views: headerViews))
headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[button]-|", options: [], metrics: nil, views: headerViews))
return headerView
}
我试图在 TableView 的 header 部分中将 UIButton 浮动到右侧。 到目前为止,我只设法为一种屏幕尺寸添加了约束...
到目前为止,这是我的代码:
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
var headerFrame:CGRect = tableView.frame
let titelArr: NSArray = ["1", "2", "3", "4", "5", "6"]
var title = UILabel(frame: CGRectMake(10, 10, 100, 30))
title.font = UIFont.boldSystemFontOfSize(20.0)
title.text = titelArr.objectAtIndex(section) as? String
title.textColor = UIColor.whiteColor()
var headBttn:UIButton = UIButton.buttonWithType(UIButtonType.ContactAdd) as UIButton
headBttn.frame = CGRectMake(320, 10, 30, 30)
headBttn.enabled = true
headBttn.titleLabel?.text = title.text
headBttn.tag = titelArr.indexOfObject(titelArr.objectAtIndex(section))
headBttn.addTarget(self, action: "addItem:", forControlEvents: UIControlEvents.TouchUpInside)
var headerView:UIView = UIView(frame: CGRectMake(0, 0, headerFrame.size.width, headerFrame.size.height))
headerView.backgroundColor = UIColor(red: 108/255, green: 185/255, blue: 0/255, alpha: 0.9)
headerView.addSubview(title)
headerView.addSubview(headBttn)
return headerView
}
如何让按钮正确浮动?其余的约束可以保持原样...
感谢您的帮助!
//七月
感谢@rdelmar,如果有人感兴趣,这里的一些研究就是答案;-)
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
var headerFrame = tableView.frame
var headerView:UIView = UIView(frame: CGRectMake(0, 0, headerFrame.size.width, headerFrame.size.height))
headerView.backgroundColor = UIColor(red: 108/255, green: 185/255, blue: 0/255, alpha: 0.9)
var title = UILabel()
title.setTranslatesAutoresizingMaskIntoConstraints(false)
title.font = UIFont.boldSystemFontOfSize(20.0)
title.text = titelArr.objectAtIndex(section) as? String
title.textColor = UIColor.whiteColor()
headerView.addSubview(title)
var headBttn:UIButton = UIButton.buttonWithType(UIButtonType.System) as UIButton
headBttn.setTranslatesAutoresizingMaskIntoConstraints(false)
headBttn.enabled = true
headBttn.titleLabel?.text = title.text
headBttn.tag = titelArr.indexOfObject(titelArr.objectAtIndex(section))
headBttn.addTarget(self, action: "addItem:", forControlEvents: UIControlEvents.TouchUpInside)
headerView.addSubview(headBttn)
var viewsDict = Dictionary <String, UIView>()
viewsDict["title"] = title
viewsDict["headBttn"] = headBttn
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"H:|-10-[title]-[headBttn]-15-|", options: nil, metrics: nil, views: viewsDict))
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:|-[title]-|", options: nil, metrics: nil, views: viewsDict))
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:|-[headBttn]-|", options: nil, metrics: nil, views: viewsDict))
return headerView
}
感谢@Seb 分享惊人的答案。由于 Swift 中进行了一些更改,这会影响您的回答。我将在 Swift 3 和 4 中提供如何执行相同操作的示例:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: tableView.frame.size.height))
headerView.backgroundColor = UIColor.lightGray
let title = UILabel()
title.translatesAutoresizingMaskIntoConstraints = false
title.text = "myTitle"
headerView.addSubview(title)
let button = UIButton(type: .system)
button.translatesAutoresizingMaskIntoConstraints = false
button.setTitle("myButton", for: .normal)
headerView.addSubview(button)
var headerViews = Dictionary<String, UIView>()
headerViews["title"] = title
headerViews["button"] = button
headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-10-[title]-[button]-15-|", options: [], metrics: nil, views: headerViews))
headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[title]-|", options: [], metrics: nil, views: headerViews))
headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[button]-|", options: [], metrics: nil, views: headerViews))
return headerView
}