2016-03-14 2 views
0

У меня есть UITextField, который программно создан. Я попытался центрировать его, используя UIScreen.mainScreen().bounds.width/2, но это не кажется правильным. Каков правильный способ выравнивания элемента ui с помощью CGRect? Как я могу центрировать UITextField по горизонтали?Центрирование по горизонтали с использованием CGRect и программирование

let screenSize: CGRect = UIScreen.mainScreen().bounds 
    let screenWidth = screenSize.width 
    let screenHeight = screenSize.height 

    let textFieldFrame = CGRect(x: screenWidth/2, y: screenHeight/2, width: 200.00, height: 40.00) 

    let textField = HoshiTextField(frame: textFieldFrame) 
    textField.placeholderColor = UIColor.whiteColor() 
    textField.borderActiveColor = UIColor.whiteColor() 

    self.view.addSubview(textField) 

У меня есть еще один вопрос. У меня есть @IBOutlet weak var label: UILabel! и вместе как выравнивание выше UITextField по горизонтали, я хочу дать ему ограничение, чтобы сохранить дистанцию ​​с UILabel.

   |  --Label--  | 
       |   |   |  I want to center UITextfield 
       |   | 20px  | horizontally and give it a constraint 
       |   |   | to stay 20px below Label 
       |  UITextField  | 

ответ

2

Проблема заключается в том, что происхождение вида находится в верхнем левом углу, а не в центре. Вы хотите let textFieldFrame = CGRect(x: (screenWidth - 200)/2, y: (screenHeight - 40)/2).

Кроме того, я бы рекомендовал использовать размер окна, а не размер экрана. Это может повредить вам, если вы когда-нибудь решите поддержать многозадачность iPad.

+0

Это Свифт вещь. Вам нужно отдать '30'' 'CGFloat'у так:' CGFloat (30) '. – AdamPro13

1

Когда вы центрируете объект, вы также должны учитывать ширину объекта. Позиция основана на 0x, 0y вашего текстового поля. Обычно я делаю что-то вроде этого:

let frameWidth: CGFloat = 200.0 
let frameHeight:CGFloat = 40.0 

textField.frame = CGRectMake((view.bounds.width/2) - (frameWidth/2), 
        (view.bounds.height/2) - (frameHeight/2), 
        frameWidth, frameHeight) 

Это должно помочь вам сосредоточиться на виду.

Смежные вопросы