2016-07-31 2 views
0

Im новое для разработки IOS, поэтому, когда я изменяю ширину UITextFeild динамически, я хочу, чтобы кнопка ниже сдвигалась вверх. Я попытался использовать ограничения, но он, кажется, не переключается динамически.Динамическое изменение позиции

(IBAction)selectStatus:(id)sender { 
    CGRect frameRect = _textViewDevices.frame; 
    frameRect.size.height = 10; 
    self.textViewDevices.frame = frameRect; 

любой хороший пример того, как этого достичь?

Я хочу достичь чего-то вроде Относительного позиционирования в андроиде.

current box before any action on action the box size change

+1

Пожалуйста, поделитесь некоторыми снимками, как это должно быть, и вместо этого – ddb

+0

Используете ли вы автоматический макет? –

+0

@ ViktorSimkó yes –

ответ

0

Программным когда первые изменения фиолетового поля в высоту, чтобы все ниже виды остаться рядом с ним, вы должны обновить frame.origin.y правильно.

Так, например, этикетка статуса должна быть, как станут ассоциироваться этим

CGRect frame = statusLabel.frame; 
frame.origin.y = firstField.origin.y + firstField.size.height + 5; 
statusLabel.frame = frame; 

И то же самое для всех ниже взглядов (я должен 5 пикселей пространства между видами)

2

Try вызовом layoutIfNeeded после изменений:

- (IBAction)selectStatus:(id)sender { 
    CGRect frameRect = _textViewDevices.frame; 
    frameRect.size.height = 10; 
    self.textViewDevices.frame = frameRect; 
    [self.view layoutIfNeeded]; 
} 

Если у вас есть ограничение высоты на текстовом, попробуйте установить его постоянным вместо установки высоты рамы:

- (IBAction)selectStatus:(id)sender { 
    self.textViewHeightConstraint.constant = 10; 
    [self.view layoutIfNeeded]; 
}