2016-03-16 3 views
0

Привет, я показываю UIButton в tableView footer программно. Проблема заключается в том, что он не отображается правильно на небольших телефонах, таких как 5s. Название кнопки идет прямо на меньших экранах. enter image description hereдобавить ограничение для программно созданной кнопки

Вы можете видеть на изображении, что название кнопки не в центре

Это, как я показываю кнопку

override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
     let footerView = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height)) 


     nextButton = UIButton(type: UIButtonType.System) as UIButton 
     nextButton!.frame = CGRectMake(0, 0, 414, 65) 

     nextButton!.setTitle("NEXT", forState: UIControlState.Normal) 
     nextButton!.setTitleColor(UIColor.whiteColor(), forState:UIControlState.Normal) 
     nextButton!.titleLabel?.font = UIFont(name: Variables.MONTESERRAT_REGULAR, size: 20.0) 



      nextButton!.backgroundColor = UIColor().blueColor()  //top 
      nextButton!.titleEdgeInsets = UIEdgeInsetsMake(0.0,10.0, 10.0, 0.0) 

      nextButton!.addTarget(self, action: "nextButtonClicked:", forControlEvents: UIControlEvents.TouchUpInside) 
     footerView.addSubview(nextButton!) 


     return footerView 
    } 

    override func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
     return 50.0 
    } 

ответ

0

Использование автоматической компоновки (VFL) вместо того, чтобы некоторые случайные статическая рамка,

let containerView = UIView() 
containerView.translatesAutoresizingMaskIntoConstraints = false 
containerView.backgroundColor = UIColor.greenColor() 


let buttonNext = UIButton(type: UIButtonType.System) 
buttonNext.translatesAutoresizingMaskIntoConstraints = false 
buttonNext.setTitle("NEXT", forState: UIControlState.Normal) 
//buttonNext.backgroundColor = UIColor.blueColor() 

containerView.addSubview(buttonNext) 

self.view.addSubview(containerView) 

var verticalConstraint = NSLayoutConstraint.constraintsWithVisualFormat("V:|[containerView]|", options: [], metrics: nil, views: ["containerView": containerView]) 

var horizontalConstraint = NSLayoutConstraint.constraintsWithVisualFormat("H:|[containerView]|", options: [], metrics: nil, views: ["containerView": containerView]) 

self.view.addConstraints(verticalConstraint) 
self.view.addConstraints(horizontalConstraint) 


verticalConstraint = NSLayoutConstraint.constraintsWithVisualFormat("V:|[buttonNext]|", options: [], metrics: nil, views: ["buttonNext": buttonNext]) 

horizontalConstraint = NSLayoutConstraint.constraintsWithVisualFormat("H:|[buttonNext]|", options: [], metrics: nil, views: ["buttonNext": buttonNext]) 

self.view.addConstraints(verticalConstraint) 
self.view.addConstraints(horizontalConstraint) 

Вы можете установить выравнивание названия, если хотите какой-либо конкретной.

Надеюсь, это вам поможет.

Edit/Update:

func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? 

    let footerView = UIView() 
    footerView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 50) 
    footerView.backgroundColor = UIColor.redColor() 

    let buttonNext = UIButton(type: UIButtonType.System) 
    buttonNext.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 50) 
    buttonNext.translatesAutoresizingMaskIntoConstraints = false 
    buttonNext.setTitle("NEXT", forState: UIControlState.Normal) 
    buttonNext.backgroundColor = UIColor.blueColor() 

    footerView.addSubview(buttonNext) 

    footerView.layoutIfNeeded() 
    return footerView 

} 

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
    return 50 
} 
+0

могли бы вы изменить свой код, так что я могу заменить код с моим. Прошу прощения, я новичок в ios. – user1hjgjhgjhggjhg

+0

См. Обновленный ответ. –

+0

Хорошо только маленький немного проблема осталось. кнопка фиксируется на маленьких экранах, но на 6sPlus она слегка приподнимается снизу, поэтому она показывает белую область. – user1hjgjhgjhggjhg