如何设计用户界面以支持iPhone和iPad的所有屏幕

时间:2015-07-29 05:54:20

标签: ios autolayout constraints ui-design adaptive-layout

我正在开展一个项目,我必须支持所有iPhone屏幕(iPhone4,iPhone 4S,iPhone 5S,iPhone 6,iPhone 6+)和iPad(iPad Mini,iPad Air,iPad Air 2,iPad) 4等)。

我想过使用AutoLayout和AdaptiveLayout进行UI设计。我学到了这一点并尝试在我的项目中申请。使用自动布局和自适应布局的设计或多或少成功,但是,当用户编辑文本字段时,调整文本字段的大小会有问题。

当用户尝试编辑文本字段时,我们需要将文本字段放在键盘顶部。所以,这可以在代码中完成,但是,当我们使用自动布局时,此代码现在不起作用。 根据概念,当我们使用自动布局时,我们无法通过代码动态调整视图中控件的框架。

我现在很震惊?请帮帮我这个家伙。在此先感谢

2 个答案:

答案 0 :(得分:0)

#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];
}

试试这个,它会帮助你

答案 1 :(得分:0)

请参阅此链接以获取答案。即使我们使用AutoLayout,它也可以帮助我们将文本字段放在首位。

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