如何设计 UI 以支持 iPhone 和 iPad 的所有屏幕

Posted

技术标签:

【中文标题】如何设计 UI 以支持 iPhone 和 iPad 的所有屏幕【英文标题】:How To Design an UI to support all the screens of iPhones and iPads 【发布时间】:2015-07-29 05:54:19 【问题描述】:

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

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

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

我现在很震惊?请帮我解决这个问题。提前致谢

【问题讨论】:

我也在使用自动布局,但使用以下代码(检查我的答案)我们可以在用户编辑文本字段时更改框架。 【参考方案1】:
#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];

试试这个,对你有帮助

【讨论】:

它可以在没有自动布局的情况下工作。但是,它不适用于自动布局 Pravin 我正在使用自动布局,但它可能会起作用,您可能会错过一些东西。【参考方案2】:

请参阅此链接以获取答案。即使我们使用 AutoLayout,它也会帮助我们将文本字段置于顶部。

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

【讨论】:

以上是关于如何设计 UI 以支持 iPhone 和 iPad 的所有屏幕的主要内容,如果未能解决你的问题,请参考以下文章

初学iPad开发入门

支持iPhone 6和iPhone 6+,具有不同的启动/启动屏幕图像,适用于iPad纵向和横向方向

Iphone 和 Ipad 的尺寸等级设计

iOS - 无需使用笔尖即可支持 iPad 和 iPhone

如何在纵向模式下支持 iPad 的 180 度变体?

iPhone/iPad/Android UI尺寸规范