Swift 4 Move Расположение UIButton - PullRequest
       0

Swift 4 Move Расположение UIButton

0 голосов
/ 25 сентября 2018

Я искала все остальные вопросы, но ни одно из прочитанных мной решений не помогло мне.

У меня есть этот код, который мне нужно изменить, чтобы при изменении заголовка кнопки он по-прежнему совпадал с некоторыми другими элементами в таблице.Кнопка была объявлена ​​программно, как показано ниже:

internal func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if section % 2 != 0 {
        let frame : CGRect = tableView.frame
        btnSelectAll = UIButton(frame: CGRect(x: frame.size.width-92, y: 0 , width: 100, height: 30))
        btnSelectAll.setTitle(btnTitle, for: .normal)
        btnSelectAll.setTitleColor(UIColor.blue, for: .normal)
        let lblTitle : UILabel = UILabel(frame: CGRect(x: 19, y: 0, width: 120, height: 30))
        btnSelectAll.addTarget(self, action:#selector(selectAllClicked(sender:)), for: .touchUpInside)
        lblTitle.text = Constants.FILTER_DEPARTMENT_SECTION
        lblTitle.font = UIFont.boldSystemFont(ofSize: 17)
        let headerView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: frame.width, height: frame.height))
        headerView.backgroundColor = UIColor.white
        headerView.addSubview(btnSelectAll)
        headerView.addSubview(lblTitle)
        return headerView
    }
    return nil
}

Я попытался изменить ее следующим образом:

if filter[Constants.FILTER_DEPARTMENT_SECTION]?.count == department.count {
    if let btnSelectAll = btnSelectAll {
        let frame : CGRect = tableView.frame
        let newFrame = CGRect(x: frame.size.width-150, y: 0 , width: 100, height: 30)
        btnSelectAll.frame = newFrame
        btnSelectAll.setTitle(Constants.DESELECT_ALL, for: .normal)
        btnSelectAll.setNeedsDisplay()
    }
}

К сожалению, я до сих пор не могу заставить ее двигаться.

1 Ответ

0 голосов
/ 25 сентября 2018

Использовать btnSelectAll.sizeToFit(),

Как Apple говорит :

Вызывайте этот метод, если вы хотите изменить размер текущего представления, чтобы оно использовало максимальносоответствующее количество места.Конкретные представления UIKit изменяют свой размер в соответствии со своими внутренними потребностями.В некоторых случаях, если представление не имеет суперпредставления, оно может масштабироваться до границ экрана.Таким образом, если вы хотите, чтобы данное представление соответствовало своему родительскому представлению, вы должны добавить его в родительское представление перед вызовом этого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...