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

时间: 2024-11-05 18:36:59

iOS 自由拖动的滑块的相关文章

自由拖动

这个是老师给的代码就是调用包装好的函数挺方便的一个东西哈<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>自由拖动</title> <style> *{ margin: 0; padding: 0; } div{ width: 200px; height: 200px; text-align: ce

IOS UITableView拖动排序功能

UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,排序等功能,下面就来讲解一下如何实现排序. 排序是当表格进入编辑状态后,在单元格的右侧会出现一个按钮,点击按钮,就可以拖动单元格,移动位置,进行手动排序. 使用系统自带拖动排序功能的步骤: 1.让tableView进入编辑状态,也就是设置它的editing为YES 2.返回编辑模式,也就是实现UITableViewDelegate中的tableview:editingStyleForRowAtIndexPath:方法,在

IOS用标签显示滑块的值

//用标签显示滑块的值 action动作的代码如下 1 - (IBAction)sliderValueChange:(id)sender { 2 UISlider *slider = (UISlider *)sender; 3 int progressAsInt = (int)(slider.value + 0.5f); 4 NSString *newText = [[NSString alloc]initWithFormat:@"%d",progressAsInt]; 5 6 sel

iOS自由控制横竖屏幕

开发中总会遇到特定页面需要横竖屏的问题,这里建议大家如下步骤轻松解决这个问题: 1.在TARGETS-->General-->Deployment Info -->Device Orientation中将需要用到的方向全部打钩 2.自定义一个UINavigationController,然后把Xib或者StoryBoard中的NavigationController与之对应 3.在自定义的nav中的.m文件下,重写这两个方法,如下: //是否允许旋转屏幕 -(BOOL)shouldAut

iOS系列 基础篇 09 开关、滑块和分段控件

iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块控件(Slider)和分段控件(Segmented Control)都是UIControl的子类,本篇我们将通过一个案例和大家一起学习这三个控件的使用. 如下图所示,本案例包括两个开关控件Switch.一个分段控件(Segmented Control).两个标签(Label)和一个滑块控件(Slid

【iOS】自定义控件入门:可拖动的环形进度

有时候UIKit的标准控件并不能满足我们的需求,因此我们可以通过自定义控件得到满足我们需求的控件,例如这篇文章将教你如何自定义一个圆形的进度条,并且用户可以通过拖动进度条上的手柄来改变进度值.主要参考了这篇文章:HOW TO BUILD A CUSTOM CONTROL IN IOS.广告时间:我的一个免费APP:午睡闹钟 使用了这个控件,欢迎大家在AppStore搜索午睡闹钟进行下载使用. 我们的自定义控件继承自UIControl类,它是UIView的子类,是所有UIKit控件(UIButto

模仿美图秀秀拼图应用ios源码

模仿美图秀秀拼图应用源码,这个是模仿美图秀秀拼图应用源码,模拟美图秀秀拼图功能,支持图片自由拖动,添加边框,以及不规则图形的切割,也可以说是十分不错的拼图功能实现. <ignore_js_op> <ignore_js_op> <ignore_js_op> 详细说明:http://ios.662p.com/thread-2010-1-1.html

微信小程序中悬浮窗功能的实现(主要探讨和解决在原生组件上的拖动)

问题场景 所谓悬浮窗就是图中微信图标的按钮,采用fixed定位,可拖动和点击. 这算是一个比较常见的实现场景了. 为什么要用cover-view做悬浮窗?原生组件出来背锅了~ 最初我做悬浮窗用的不是cover-view,而是view. 这是简化的代码结构: index.wxml: <view class="move-view" style=" top:{{top}}px;left:{{left}}px;" bindtap="goToHome"

Android 自学之拖动条SeekBar

拖动条(SeekBar)和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块的位置来标识数值----而且拖动条允许用户拖动滑动块来改变值,因此拖动条通常用于对系统的某种数值进行调节,比如音量调节. SeekBar允许用户改变拖动条的滑块外观,改变滑块外观通过如下属性来指定 android:thumb  指定一个Drawable对象,该对象将作为自定义滑块. 为了让程序能响应拖动条滑块位置的改变,程序可以考虑为他绑定一个OnSeekBarChangerListener监