码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 自由拖动的滑块

时间:2017-06-09 19:14:55      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:div   cell   one   idt   blog   src   ges   center   size   

完全自由拖动的滑块

floatViewExample

  技术分享

 

代码实现:

@implementation FloatView

#pragma mark - lazyload

- (UIImageView *)imageView {
    if (_imageView == nil) {
        _imageView = [[UIImageView alloc]init];
        _imageView.image = [UIImage imageNamed:@"telephone"];
        _imageView.frame = self.bounds;
    }
    return _imageView;
}


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    
    UITouch *touch = [touches anyObject];
    //CGPoint pt = [touch locationInView:self.superview];
    CGRect frame = self.frame;
    //在自身视图中的位置
    CGPoint pt = [touch locationInView:self];
    CGPoint anchorPoint = CGPointMake(pt.x/self.bounds.size.width, pt.y/self.bounds.size.height);
    //这是设置的是position也就是center的位置百分比
    //也就是鼠标所在的位置
    self.layer.anchorPoint = anchorPoint;
    self.frame = frame;
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint pt = [touch locationInView:self.superview];
    
    self.layer.position = pt;
    
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [self limitRangeOfView];
}

- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [self limitRangeOfView];
}



- (void)limitRangeOfView {
    [UIView animateWithDuration:0.3 animations:^{
        
        CGFloat padding = 1;
        CGRect frame = self.frame;
        if (frame.origin.x < padding) {
            frame.origin.x = padding;
        }
        if (frame.origin.y < padding) {
            frame.origin.y = padding;
        }
        if (frame.origin.x > (kScreenWidth-frame.size.height-padding)) {
            frame.origin.x = kScreenWidth-frame.size.width-padding;
        }
        if (frame.origin.y > (kScreenHeight-frame.size.height-padding)) {
            frame.origin.y = kScreenHeight-frame.size.height-padding;
        }
        
        self.frame = frame;
    }];
}

@end

  

github 地址:floatViewExample

iOS 自由拖动的滑块

标签:div   cell   one   idt   blog   src   ges   center   size   

原文地址:http://www.cnblogs.com/saytome/p/6973169.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!