Make button in the header of the tableview section float / align right programmatically // Swift

I am trying to align the float of a UIButton to the right in the header of a TableView section universally. So far I have managed to add restrictions for one screen size ...

Here is my code:

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 } 

How can I make the button float to the right? Other restrictions may remain as they are ...

thanks for your help!

// seb

+5
source share
2 answers

thanks to @rdelmar, and some research here is the answer if someone needs to be indexed; -)

 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 } 
+8
source

Thnx for sharing @Seb's awesome answer. Since there have been some changes in Swift that affect your answer. I will give an example of how to do the same in Swift 3 and 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 } 
+1
source

Source: https://habr.com/ru/post/1210812/


All Articles