iOS-在同一页面同时展示登录和注册View

思路:

在一个UIView设置它的Frame的宽度是屏幕的两倍,然后把登录的View和注册的View同时加载这个View上(注册View.x=这个View宽度的一半),点击切换按钮时改变这个UIView的leadingConstraint(View.x)就可以让这两个View显示。

代码:

#import "HKLoginRegisterViewController.h"
#import "HKLoginRegisterView.h"
#import "HKFastLoginView.h"
@interface HKLoginRegisterViewController ()
@property (weak, nonatomic) IBOutlet UIView *middleView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leadCons;
@property (weak, nonatomic) IBOutlet UIView *bottomView;
@end

@implementation HKLoginRegisterViewController
- (IBAction)close:(UIButton *)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)clickRegister:(UIButton *)sender {
    sender.selected = !sender.selected;
    //平移中间View
    _leadCons.constant = _leadCons.constant == 0 ? - self.middleView.width * 0.5 : 0;
    [UIView animateWithDuration:0.25 animations:^{
        [self.view layoutIfNeeded];
    }];
}

//1.划分结构(顶部 中间 底部)
//2.占位视图思想(分块)
//3.越复杂的界面 越要封装(复用)
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    /*
      屏幕适配:
     1.一个View从xib加载,需不需要重新固定尺寸 一定要在外部再确定下
     2.在ViewDidLoad设置Frame好不好, 开发中一般在viewDidLayoutSubviews布局子控件 设置Frame
     */
    self.view.backgroundColor = kRedColor;
    
    // 1.创建登录view
    HKLoginRegisterView *loginView = [HKLoginRegisterView loginView];
    // 添加到中间的view
    [self.middleView addSubview:loginView];
    
    // 2.添加注册界面
    HKLoginRegisterView *registerView = [HKLoginRegisterView registerView];
    registerView.x = self.middleView.width * 0.5;
    // 添加到中间的view
    [self.middleView addSubview:registerView];
    
    //3. 添加快速登录view
    HKFastLoginView *fastLoginView = [HKFastLoginView fastLoginView];
    // 添加到底部的view
    [self.bottomView addSubview:fastLoginView];
}
// viewDidLayoutSubviews:才会根据布局调整控件的尺寸
- (void)viewDidLayoutSubviews
{
    // 一定要调用super
    [super viewDidLayoutSubviews];
    
    HKLoginRegisterView *loginView = self.middleView.subviews[0];
    loginView.frame = CGRectMake(0, 0, self.middleView.width * 0.5, self.middleView.height);
    
    HKLoginRegisterView *registerView = self.middleView.subviews[1];
    registerView.frame = CGRectMake( self.middleView.width * 0.5, 0,self.middleView.width * 0.5, self.middleView.height);
    
    // 设置快速登录
    HKFastLoginView *fastLoginView = self.bottomView.subviews.firstObject;
    fastLoginView.frame = self.bottomView.bounds;
}

 

效果图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/StevenHuSir/p/10056801.html