• 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;
    }

     

    效果图:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    jQuery基础总结
    javascript 继承实现方式
    javascript种的call、apply、bind方法总结
    react 入门(三)
    react 入门(二)
    react 入门(一)
    javascript 原型链
    Vue.js——60分钟快速入门
    结合字节码指令理解Java虚拟机栈和栈帧
    JVM GC垃圾回收详解
  • 原文地址:https://www.cnblogs.com/StevenHuSir/p/10056801.html
Copyright © 2020-2023  润新知