我正在开展一个项目,我必须支持所有iPhone屏幕(iPhone4,iPhone 4S,iPhone 5S,iPhone 6,iPhone 6+)和iPad(iPad Mini,iPad Air,iPad Air 2,iPad) 4等)。
我想过使用AutoLayout和AdaptiveLayout进行UI设计。我学到了这一点并尝试在我的项目中申请。使用自动布局和自适应布局的设计或多或少成功,但是,当用户编辑文本字段时,调整文本字段的大小会有问题。
当用户尝试编辑文本字段时,我们需要将文本字段放在键盘顶部。所以,这可以在代码中完成,但是,当我们使用自动布局时,此代码现在不起作用。 根据概念,当我们使用自动布局时,我们无法通过代码动态调整视图中控件的框架。
我现在很震惊?请帮帮我这个家伙。在此先感谢
答案 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,它也可以帮助我们将文本字段放在首位。