【问题标题】:How To Design an UI to support all the screens of iPhones and iPads如何设计 UI 以支持 iPhone 和 iPad 的所有屏幕
【发布时间】: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。我学到了这一点,并尝试在我的项目中应用。我在自动布局和自适应布局的设计上或多或少是成功的,但是,当用户编辑它时,调整文本字段的大小会出现问题。

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

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

【问题讨论】:

  • 我也在使用自动布局,但使用以下代码(检查我的答案)我们可以在用户编辑文本字段时更改框架。

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2013-06-25
    • 1970-01-01
    • 2015-06-25
    • 2015-11-22
    • 1970-01-01
    相关资源
    最近更新 更多