iOS 自由拖动的滑块

Posted 笔记而已

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 自由拖动的滑块相关的知识,希望对你有一定的参考价值。

完全自由拖动的滑块

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 自由拖动的滑块的主要内容,如果未能解决你的问题,请参考以下文章

WPF:带有在用户拖动后触发的事件的滑块

WPF:具有在用户拖动后触发的事件的滑块

WPF 滑块仅可拖动

反应:带有自定义钩子的滑块无法正常工作

如何借助 iOS Swift 中的滑块更改标签的值?

闪亮的条件面板绕过多个相关的滑块