2015-09-22 2 views
0

У меня есть 2 вида: вид по умолчанию VC и другое представление 'view2'. Теперь я хочу функциональность, где я вижу, что «view2» появляется под представлением по умолчанию и кадром текущего вида должен изменить размер соответственно. Я новичок в iOS, но я хорошо знаю основные понятия. Итак, я провел некоторое исследование, и вот что я пытаюсь сделать.Вид должен появиться из-под другого вида

Щелчок текстового поля должен показывать вид 2, как указано выше.

textFieldDidBeginEditing: 

Это делегат, который будет использоваться.

[textField resignFirstResponder];//keyboard 
    textField.inputView = view2; 
    [UIView animateWithDuration:1.0 
        animations:^{ 
         _mySubView.frame = CGRectMake(0, 300,self.view.frame.size.width , 320); 
        }];//For animation 

Но я не могу получить идеальную функциональность, как я уже упоминал выше.

+0

Вы говорите, что у вас есть представление, которое не управляется контроллером вида? –

+1

Я думаю, вы хотите, чтобы ваш VC-просмотр содержал два дочерних представления. Один сверху и один сзади. Используйте ограничения, чтобы расположить их. В коде настраивайте ограничения на их новые позиции и анимируйте изменение ограничения, помещая '[self.view layoutIfNeeded]' в блок анимации. –

+0

Могу ли я получить код, чтобы я мог анализировать это .... – Reckoner

ответ

0

Atlast Я сделал с ним, и я нашел 2 способа сделать это: Первый метод основан на создании выход требуемого ограничения, а второй метод использует метод класса «NSLayoutConstraint»:

+(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c; 

на самом деле этот метод основан на формуле а = в * м + C, где т = мультипликатора и с = константа.

Скажем, у меня есть один вид 'view1', который находится в центре прямо сейчас, и по умолчанию viewController открывается «view». Создает вид1, скрытый в начале. Теперь, если мне нужна функциональность, когда я нажимаю на свой текстовый экран и Я должен видеть, что мой view2 появляясь из bottom.So, что мне нужно сделать, это установить «Y» координату моей vIEW2 что-то за пределами высоты моего взгляда по умолчанию:

view2.frame = CGRectMake(0,self.view.frame.size.height+someValue,width,height); 

После этого просто использовать вышеупомянутый метод как :

 NSLayoutConstraint *view2Position = [NSLayoutConstraint constraintWithItem:_grayView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:someNegativeValue]; 
[self.view addConstraint:view2Position];//Make sure the negative value contains whole view(view2) on the view(view) 

И чтобы добавить к нему анимацию, добавьте be низкий способ в блоке анимации:

[view2 layoutIfNeeded]; 

Так, в основном здесь:
A = view2
B = вид
м = множитель 1.0f; // здесь он получает умноженное на нижней кромке позиции зрения
c = некоторое отрицательное значение

0

Вам нужно сделать subview вашего view2 в вашем текущем контроллере.

[UIView animateWithDuration:1.0 
        animations:^{ 
          View2 *_mySubView=[View2 alloc]init]; 

         _mySubView.frame = CGRectMake(0, 300,self.view.frame.size.width , 320); 
         [self.view addsubview:_mySubview]; 

        }]; 
+0

Ну, дело в том, что я уже размещаю свой subView в раскадровке внизу. Теперь он должен появиться из нижней части экрана и должен переместить мой Посмотрите вверх. Как это сделать? Должен ли я установить свою координату «Y» за ее высоту и снова «Y» на некоторое значение в представлении? – Reckoner

+0

Использовать просто нужно установить свой фрейм y subview using_mySubview.frame.origin.y = _mysubview.frame.origin.y-30 (установить значение в соответствии с тем, как вы хотите видеть.) – BHUMICA

+0

Yup Я сделал это !!! Но я хочу немного больше.Позвольте мне уточнить: view1 (не вид контроллера по умолчанию) находится внизу страницы в storyboard.View2 находится над view1 и скрыт. Теперь, когда я нажимаю текстовое поле, view2 должен появляться из-под view1, и соответственно view1 должен двигаться вверх. Теперь я знаю, что мне нужно установить координаты «Y» для обоих представлений. Но поскольку у меня есть эти представления в раскадровке, я не смогу изменить кадр этих двух представлений (я могу, если я сниму флажок «Использовать авто макета "в раскадровке). Поэтому для этого мне нужно установить ограничения во время выполнения. – Reckoner

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