iOS用VFL语言实现屏幕适配

界面显示效果如下:


布局文件的编写:

//初始化视图控件
- (void)initView{
    /**
     *  子视图
     */
    subView = [[UIView alloc] init];
    //添加到视图
    [self.view addSubview:subView];
    
    //禁用autoresizing
    subView.translatesAutoresizingMaskIntoConstraints = NO;
    //添加约束
    NSArray *viewW = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[subView]-0-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:@{@"subView":subView}];
    [self.view addConstraints:viewW];
    NSLayoutConstraint *viewH = [NSLayoutConstraint constraintWithItem:subView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:subView attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0];
    [self.view addConstraint:viewH];
    NSLayoutConstraint *subViewCenter = [NSLayoutConstraint constraintWithItem:subView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0];
    [self.view addConstraint:subViewCenter];
    
    /**
     *  子视图中的九个按钮
     */
    btn1 = [UIButton buttonWithType:UIButtonTypeSystem];
    btn2 = [UIButton buttonWithType:UIButtonTypeCustom];
    btn3 = [UIButton buttonWithType:UIButtonTypeCustom];
    btn4 = [UIButton buttonWithType:UIButtonTypeCustom];
    btn5 = [UIButton buttonWithType:UIButtonTypeCustom];
    btn6 = [UIButton buttonWithType:UIButtonTypeCustom];
    btn7 = [UIButton buttonWithType:UIButtonTypeCustom];
    btn8 = [UIButton buttonWithType:UIButtonTypeCustom];
    btn9 = [UIButton buttonWithType:UIButtonTypeCustom];
    
    //添加按钮到数组
    btnArray = @[btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9];
    //添加按钮
    for (UIButton *btn in btnArray) {
        //将所有按钮添加到视图
        [subView addSubview:btn];
        //禁用所有按钮的autoresizing
        btn.translatesAutoresizingMaskIntoConstraints = NO;
    }
    
    //横排
    NSArray *btn123 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-1-[btn1]-1-[btn2(==btn1)]-1-[btn3(==btn1)]-1-|" options:NSLayoutFormatAlignAllTop metrics:nil views:@{@"btn1":btn1,@"btn2":btn2,@"btn3":btn3}];
    [subView addConstraints:btn123];
    NSArray *btn456 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-1-[btn4]-1-[btn5(==btn4)]-1-[btn6(==btn4)]-1-|" options:NSLayoutFormatAlignAllTop metrics:nil views:@{@"btn4":btn4,@"btn5":btn5,@"btn6":btn6}];
    [subView addConstraints:btn456];
    NSArray *btn789 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-1-[btn7]-1-[btn8(==btn7)]-1-[btn9(==btn7)]-1-|" options:NSLayoutFormatAlignAllTop metrics:nil views:@{@"btn7":btn7,@"btn8":btn8,@"btn9":btn9}];
    [subView addConstraints:btn789];
    //竖排
    NSArray *btn147 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-1-[btn1]-1-[btn4(==btn1)]-1-[btn7(==btn1)]-1-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:@{@"btn1":btn1,@"btn4":btn4,@"btn7":btn7}];
    [subView addConstraints:btn147];
    NSArray *btn258 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-1-[btn2]-1-[btn5(==btn2)]-1-[btn8(==btn2)]-1-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:@{@"btn2":btn2,@"btn5":btn5,@"btn8":btn8}];
    [subView addConstraints:btn258];
    NSArray *btn369 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-1-[btn3]-1-[btn6(==btn3)]-1-[btn9(==btn3)]-1-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:@{@"btn3":btn3,@"btn6":btn6,@"btn9":btn9}];
    [subView addConstraints:btn369];
    
    /**
     *  返回按钮
     */
    returnBtn = [[UIButton alloc] init];
    [returnBtn setTitle:@"返回主界面" forState:UIControlStateNormal];
    [returnBtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    returnBtn.titleLabel.font = [UIFont boldSystemFontOfSize:40.0f];
    [returnBtn addTarget:self action:@selector(returnBack) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:returnBtn];
    //禁用autoresizing
    returnBtn.translatesAutoresizingMaskIntoConstraints = NO;
    //返回按钮的宽度
    NSArray *returnBtnW = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-40-[returnBtn]-40-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:@{@"returnBtn":returnBtn}];
    [self.view addConstraints:returnBtnW];
    //返回按钮的垂直位置
    NSLayoutConstraint *returnBtnV = [NSLayoutConstraint constraintWithItem:returnBtn attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:0.2 constant:0];
    [self.view addConstraint:returnBtnV];
    
    /**
     *  计时标签
     */
    timeLabel = [[UILabel alloc] init];
    timeLabel.text = @"00:00";
    [self.view addSubview:timeLabel];
    //禁用autoresizing
    timeLabel.translatesAutoresizingMaskIntoConstraints = NO;
    timeLabel.font = [UIFont boldSystemFontOfSize:30];
    timeLabel.textAlignment = NSTextAlignmentCenter;
    //计时标签的宽度
    NSArray *timeLabelW = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[timeLabel]-0-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:@{@"timeLabel":timeLabel}];
    [self.view addConstraints:timeLabelW];
    //计时标签的垂直位置
    NSLayoutConstraint *timeLabelV = [NSLayoutConstraint constraintWithItem:timeLabel attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.8 constant:0];
    [self.view addConstraint:timeLabelV];
}

其他一些方法就不再写了,很简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值