04-手势滑动(把屏幕分成四个区域)
2016-10-18 本文已影响83人
紫荆秋雪_文
1、本篇继续研究手势滑动,不同的是把屏幕分成四个手势滑动区域
2、Demo通过滑动四个不同的区域来控制背景色的RGB值和透明度
//
// ViewController.m
// 66-手势滑动
//
// Created by freedom on 16/10/17.
// Copyright © 2016年 Raven. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
/**
* 第一个点
*/
@property (nonatomic, assign) CGPoint firstPoint;
/**
* 第二个点
*/
@property (nonatomic, assign) CGPoint secondPoint;
/**
* 最开始的点
*/
@property (nonatomic, assign) CGPoint startPoint;
/**
* 控制alider
*/
@property (nonatomic, strong) UISlider *alider;
/**
* 控制背景色RGB中的R
*/
@property (nonatomic, strong) UISlider *R_slider;
/**
* 控制背景色RGB中的G
*/
@property (nonatomic, strong) UISlider *G_slider;
/**
* 控制背景色RGB中的B
*/
@property (nonatomic, strong) UISlider *B_slider;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1、颜色的透明度
self.alider = [[UISlider alloc] initWithFrame:CGRectMake(0, -100, 0, 0)];
//设置最小值
self.alider.minimumValue = 0.0;
//设置最大值
self.alider.maximumValue = 1.0;
self.alider.hidden = YES;
// self.alider.value = [UIScreen mainScreen].brightness;
[self.view addSubview:self.alider];
//2、控制背景色RGB中的R
self.R_slider = [[UISlider alloc] initWithFrame:CGRectMake(0, -100, 0, 0)];
//设置最小值
self.R_slider.minimumValue = 0.0;
//设置最大值
self.R_slider.maximumValue = 1.0;
self.R_slider.hidden = YES;
// self.R_slider.value = [UIScreen mainScreen].brightness;
[self.view addSubview:self.R_slider];
//3、控制背景色RGB中的G
self.G_slider = [[UISlider alloc] initWithFrame:CGRectMake(0, -100, 0, 0)];
//设置最小值
self.G_slider.minimumValue = 0.0;
//设置最大值
self.G_slider.maximumValue = 1.0;
self.G_slider.hidden = YES;
// self.R_slider.value = [UIScreen mainScreen].brightness;
[self.view addSubview:self.G_slider];
//4、控制背景色RGB中的B
self.B_slider = [[UISlider alloc] initWithFrame:CGRectMake(0, -100, 0, 0)];
//设置最小值
self.B_slider.minimumValue = 0.0;
//设置最大值
self.B_slider.maximumValue = 1.0;
self.B_slider.hidden = YES;
// self.R_slider.value = [UIScreen mainScreen].brightness;
[self.view addSubview:self.B_slider];
}
#pragma mark -
#pragma mark 监听手势方法
#pragma mark 1-开始接触屏幕
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
//第一个点
for (UITouch *touch in event.allTouches) {
self.firstPoint = [touch locationInView:self.view];
}
self.startPoint = self.firstPoint;
}
#pragma mark 2-手势在屏幕上滑动
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
//第二个点
for (UITouch *touch in event.allTouches) {
self.secondPoint = [touch locationInView:self.view];
}
//判断是左右滑动还是上下滑动
CGFloat verValue =fabs(self.startPoint.y - self.secondPoint.y);
CGFloat horValue = fabs(self.startPoint.x - self.secondPoint.x);
//左右分屏
if (self.startPoint.x <= self.view.frame.size.width * 0.5) {
#warning 左屏上下滚动
if (verValue < horValue) return;
//区分上下屏
if (self.startPoint.y <= self.view.frame.size.height * 0.5) {
#pragma mark 1-左上拼来控制 背景色的alpha值
self.alider.value += (self.firstPoint.y - self.secondPoint.y) / 500;
NSLog(@"左上屏alpha:%f", self.alider.value);
self.view.backgroundColor = [UIColor colorWithRed:self.R_slider.value green:self.G_slider.value blue:self.B_slider.value alpha:self.alider.value];
} else {
#pragma mark 2-左下屏来控制 背景色的R值
self.R_slider.value += (self.firstPoint.y - self.secondPoint.y) / 500;
NSLog(@"左下屏R:%f", self.R_slider.value);
self.view.backgroundColor = [UIColor colorWithRed:self.R_slider.value green:self.G_slider.value blue:self.B_slider.value alpha:self.alider.value];
}
} else {
#warning 右屏左右滚动
if (verValue > horValue) return;
//区分上下屏
if (self.startPoint.y <= self.view.frame.size.height * 0.5) {
#pragma mark 3-左下屏来控制 背景色的G值
self.G_slider.value += (self.firstPoint.x - self.secondPoint.x) / 500;
NSLog(@"右上屏G:%f", self.G_slider.value);
self.view.backgroundColor = [UIColor colorWithRed:self.R_slider.value green:self.G_slider.value blue:self.B_slider.value alpha:self.alider.value];
} else {
#pragma mark 4-左下屏来控制 背景色的G值
self.B_slider.value += (self.firstPoint.x - self.secondPoint.x) / 500;
NSLog(@"右下屏B:%f", self.B_slider.value);
self.view.backgroundColor = [UIColor colorWithRed:self.R_slider.value green:self.G_slider.value blue:self.B_slider.value alpha:self.alider.value];
}
}
self.firstPoint = self.secondPoint;
}
#pragma mark 3-手势在屏幕上滑动结束
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
self.firstPoint = self.secondPoint = CGPointZero;
}
@end