登錄注冊(cè).gif
登錄注冊(cè)頁(yè)面:
該頁(yè)面比較簡(jiǎn)單,直接使用Xib搭建即可.有幾個(gè)點(diǎn)需要需要注意:
1.底部的快速登錄按鈕,圖片在上面,文字在下面,只需自定義按鈕,重新布局內(nèi)部的子控件即可.
- (void)setup
{
//文字居中
self.titleLabel.textAlignment = NSTextAlignmentCenter;
}
//通過(guò)代碼創(chuàng)建
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
[self setup];
}
return self;
}
//通過(guò)xib創(chuàng)建
- (void)awakeFromNib
{
[super awakeFromNib];
[self setup];
}
//重新布局子控件
- (void)layoutSubviews
{
[super layoutSubviews];
// 調(diào)整圖片
self.imageView.x = 0;
self.imageView.y = 0;
self.imageView.width = self.width;
self.imageView.height = self.imageView.width;
// 調(diào)整文字
self.titleLabel.x = 0;
self.titleLabel.y = self.imageView.height;
self.titleLabel.width = self.width;
self.titleLabel.height = self.height - self.titleLabel.y;
}
2.中間輸入框:當(dāng)光標(biāo)聚焦時(shí),占位文字顯示為白色,光標(biāo)離開(kāi)時(shí),占位文字為淺灰色.此處自定義textField,通過(guò)KVC,設(shè)置占位文字的顏色.
static NSString * const LXXPlacerholderColorKeyPath = @"_placeholderLabel.textColor";
- (void)awakeFromNib
{
[super awakeFromNib];
// 設(shè)置光標(biāo)顏色和文字顏色一致
self.tintColor = self.textColor;
// 不成為第一響應(yīng)者
[self resignFirstResponder];
}
/**
* 當(dāng)前文本框聚焦時(shí)就會(huì)調(diào)用
*/
- (BOOL)becomeFirstResponder
{
// 修改占位文字顏色
[self setValue:self.textColor forKeyPath:LXXPlacerholderColorKeyPath];
return [super becomeFirstResponder];
}
/**
* 當(dāng)前文本框失去焦點(diǎn)時(shí)就會(huì)調(diào)用
*/
- (BOOL)resignFirstResponder
{
// 修改占位文字顏色
[self setValue:[UIColor grayColor] forKeyPath:LXXPlacerholderColorKeyPath];
return [super resignFirstResponder];
}
那么如何知道textField的占位文字的顏色這個(gè)屬性呢?可以通過(guò)runtime的一些方法獲取某個(gè)類的所有屬性.
+ (void)getIvars
{
unsigned int count = 0;
// 拷貝出所有的成員變量列表
Ivar *ivars = class_copyIvarList([UITextField class], &count);
for (int i = 0; i<count; i++) {
// 取出成員變量
// Ivar ivar = *(ivars + i);
Ivar ivar = ivars[i];
// 打印成員變量名字
NSLog(@"%s %s", ivar_getName(ivar), ivar_getTypeEncoding(ivar));
}
// 釋放
free(ivars);
}
3.點(diǎn)擊注冊(cè)賬號(hào)按鈕時(shí),登陸框和注冊(cè)框互相切換.
只需在XIB中設(shè)置相應(yīng)的約束即可:設(shè)置注冊(cè)框和登錄框頂部對(duì)齊,等高等寬,然后注冊(cè)框的左邊粘著登錄框的右邊.通過(guò)改變登錄框距離屏幕右邊的距離約束即可.
- (IBAction)registerBtnClick:(UIButton *)sender {
// 退出鍵盤
[self.view endEditing:YES];
if (self.loginLeftConstraint.constant == 0) {
self.loginLeftConstraint.constant = -self.view.width;
sender.selected = YES;
}else {
self.loginLeftConstraint.constant = 0;
sender.selected = NO;
}
[UIView animateWithDuration:0.25 animations:^{
[self.view layoutIfNeeded];
}];
}