标签:
//
// ViewController.m
// AutoLayoutByCode
//
// Created by sunlihuo on 15/6/1.
// Copyright (c) 2015年 sunlihuo. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property (strong, nonatomic) UIView *view1;
@property (strong, nonatomic) UIView *view2;
@property (strong, nonatomic) UIView *view3;
@property (strong, nonatomic) UISlider *slider;
@property (strong, nonatomic) NSLayoutConstraint *view1WidthC;
@property (strong, nonatomic) NSLayoutConstraint *view1HeightC;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self onCreate];
[self createConstraint];
}
#pragma mark 创建界面控件
- (void)onCreate {
//创建view1
self.view1 = [[UIView alloc]initWithFrame:CGRectZero];
self.view1.backgroundColor = [UIColor redColor];
//创建view2
self.view2 = [[UIView alloc]initWithFrame:CGRectZero];
self.view2.backgroundColor = [UIColor redColor];
//创建slider
self.slider = [[UISlider alloc]initWithFrame:CGRectZero];
self.slider.maximumValue = 120;
self.slider.minimumValue = 80;
self.slider.value = 80;
[self.slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
//创建view3
self.view3 = [[UIView alloc]initWithFrame:CGRectZero];
self.view3.backgroundColor = [UIColor redColor];
//加入view
[self.view addSubview:self.view1];
[self.view addSubview:self.view2];
[self.view addSubview:self.slider];
[self.view addSubview:self.view3];
}
#pragma mark 创建约束
- (void)createConstraint {
//设置需要添加约束的view的autoresizing属性为NO
self.view1.translatesAutoresizingMaskIntoConstraints = NO;
self.view2.translatesAutoresizingMaskIntoConstraints = NO;
self.slider.translatesAutoresizingMaskIntoConstraints = NO;
self.view3.translatesAutoresizingMaskIntoConstraints = NO;
NSDictionary *dictC = @{@"view1":self.view1, @"view2":self.view2, @"slider":self.slider, @"view3":self.view3};
//view1的约束
NSArray *view1TopC = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view1]" options:kNilOptions metrics:nil views:dictC];
NSArray *view1WidthC = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[view1(80.0)]" options:0 metrics:nil views:dictC];
NSArray *view1HightC = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[view1(80.0)]" options:0 metrics:nil views:dictC];
self.view1WidthC = view1WidthC[0];
self.view1HeightC = view1HightC[0];
[self.view addConstraints:view1TopC];
[self.view addConstraints:view1WidthC];
[self.view addConstraints:view1HightC];
//view2的约束
NSArray *view2TopC = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[view1]-20-[view2]" options:kNilOptions metrics:nil views:dictC];
NSArray *view2LeftRightC = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-60-[view2]-60-|" options:0 metrics:nil views:dictC];
NSArray *view2HeightC = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[view2(44)]" options:0 metrics:nil views:dictC];
NSLayoutConstraint *centerX = [NSLayoutConstraint constraintWithItem:self.view1 attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view2 attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];
[self.view addConstraints:view2TopC];
[self.view addConstraints:view2LeftRightC];
[self.view addConstraints:view2HeightC];
[self.view addConstraint:centerX];
//添加slider的约束
NSArray *sliderTopC = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[view2]-20-[slider]" options:0 metrics:nil views:dictC];
NSArray *sliderLeftRightC = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-60-[slider]-60-|" options:0 metrics:nil views:dictC];
NSArray *sliderHeightC = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[slider(30)]" options:0 metrics:nil views:dictC];
[self.view addConstraints:sliderTopC];
[self.view addConstraints:sliderLeftRightC];
[self.view addConstraints:sliderHeightC];
//添加view3的约束
NSArray *view3TopC = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[slider]-20-[view3]" options:0 metrics:nil views:dictC];
NSArray *view3LeftRightC = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-60-[view3]-60-|" options:0 metrics:nil views:dictC];
NSLayoutConstraint *view3HeightC = [NSLayoutConstraint constraintWithItem:self.view3 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:self.view2 attribute:NSLayoutAttributeHeight multiplier:2 constant:0];
[self.view addConstraints:view3TopC];
[self.view addConstraints:view3LeftRightC];
[self.view addConstraint:view3HeightC];
}
#pragma mark 根据滑块滑到改变第一个视图的宽高约束
- (void)sliderValueChanged:(UISlider *)sender{
//1.清除第一个视图原有的宽高约束
[self.view removeConstraint:self.view1WidthC];
[self.view removeConstraint:self.view1HeightC];
NSDictionary *dictC = @{@"view1":self.view1, @"view2":self.view2, @"slider":self.slider, @"view3":self.view3};
NSArray *view1WidthC = [NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"H:[view1(%f)]", sender.value] options:0 metrics:nil views:dictC];
NSArray *view1HightC = [NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:[view1(%f)]", sender.value] options:0 metrics:nil views:dictC];
self.view1WidthC = view1WidthC[0];
self.view1HeightC = view1HightC[0];
[self.view addConstraints:view1WidthC];
[self.view addConstraints:view1HightC];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
标签:
原文地址:http://blog.csdn.net/sunlihuo/article/details/46311241