Как разработать пользовательский интерфейс для поддержки всех экранов iPhone и iPad

Я работаю над проектом, в котором я должен поддерживать все экраны iPhone, такие как (iPhone4, iPhone 4S, iPhone 5S, iPhone 6, iPhone 6+) и iPad (iPad Mini, iPad Air, iPad Air 2, iPad 4 и т. д. ).

Я думал об использовании AutoLayout и AdaptiveLayout для дизайна пользовательского интерфейса. Я это узнаю и пытаюсь применить в своем проекте. У меня более-менее получилось с дизайном с автомакетом и адаптивным макетом, но есть проблема с изменением размера текстового поля, когда пользователь редактирует его.

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

Я поражен сейчас?. Пожалуйста, помогите мне с этим, ребята. Заранее спасибо


person Edward Sagayaraj    schedule 29.07.2015    source источник
comment
Я также использую автоматическую компоновку, но с помощью следующего кода (проверьте мой ответ) мы можем менять кадры, когда пользователь редактирует текстовое поле.   -  person Pravin Tate    schedule 29.07.2015


Ответы (2)


#pragma mark ----- Text field -----
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    // scroll up current text field
    [self animateTextField:textField up:YES withOffset:textField.frame.origin.y / 2];   
}

-(void)textFieldDidEndEditing:(UITextField *)textField{

  [self animateTextField:textField up:NO withOffset:textField.frame.origin.y / 2];
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

    [textField resignFirstResponder];
    return true;
}
#pragma mark ---- Text field scroll Up -----
-(void)animateTextField:(UITextField*)textField up:(BOOL)up withOffset:(CGFloat)offset
{
    const int movementDistance = -offset;
    const float movementDuration = 0.4f;
    int movement = (up ? movementDistance : -movementDistance);
    [UIView beginAnimations: @"animateTextField" context: nil];
    [UIView setAnimationBeginsFromCurrentState: YES];
    [UIView setAnimationDuration: movementDuration];
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
    [UIView commitAnimations];
}

попробуй это тебе поможет

person Pravin Tate    schedule 29.07.2015
comment
Он будет работать без Autolayout. Но, Это не будет работать для авторазметки правина - person Edward Sagayaraj; 31.07.2015
comment
Я использую автоматическую компоновку, но она работает, возможно, вы что-то упустили. - person Pravin Tate; 31.07.2015

Пожалуйста, перейдите по этой ссылке для ответа. Это поможет нам вывести текстовое поле наверх, даже если мы используем AutoLayout.

https://github.com/michaeltyson/TPKeyboardAvoiding/blob/master/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m

person Edward Sagayaraj    schedule 31.07.2015