JPSKeyboardLayoutGuide
允许您轻松使自动布局视图控制器对键盘有感知。想象一下,如果它随着键盘框架移动,它就像 bottomLayoutGuide
。
这使得在视图中垂直居中项目变得非常简单,当键盘出现/消失时它们保持居中。
将 JPSKeyboardLayoutGuide
文件夹拖入您的项目中。
JPSKeyboardLayoutGuide
是 UIViewController
的类别,因此对于您想要采用之前描述的行为的任何控制器,您必须在其各自的回调中覆盖并调用这些方法
- (void)jps_viewDidLoad;
- (void)jps_viewWillAppear:(BOOL)animated;
- (void)jps_viewDidDisappear:(BOOL)animated;
一个示例实现可能如下所示
#import "JPSKeyboardLayoutGuideViewController.h"
@interface LoginVC : UIViewController
@end
@implementation LoginVC
- (void)viewDidLoad {
[super viewDidLoad];
[self jps_viewDidLoad];
[self setupLoginField];
}
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self jps_viewWillAppear:animated];
}
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self jps_viewDidDisappear:animated];
}
- (void)setupLoginField {
self.loginField = [[UITextField alloc] init];
self.loginField.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:self.loginField];
self.loginField.placeholder = @"username";
// Constraints
NSLayoutConstraint *centerX = [NSLayoutConstraint constraintWithItem:self.loginField
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1.0f
constant:0.0f];
NSLayoutConstraint *bottom = [NSLayoutConstraint constraintWithItem:self.loginField
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.keyboardLayoutGuide
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:-10.0f];
[self.view addConstraints:@[centerX, bottom]];
}
@end
在导入 JPSKeyboardLayoutGuide
时,您会看到 keyboardLayoutGuide
、topLayoutGuide
和 bottomLayoutGuide
。所有这些指南以相同的方式表现。
有关布局指南的更多详细信息,请参阅 Apple 的有关 UILayoutSupport
协议 的文档
MIT 许可。