拖动视图

@interface MoveView : UIView
{
    CGPoint startPoint;
}

#import "MoveView.h"

@implementation MoveView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        //允许用户交互
        self.userInteractionEnabled = YES;
    }
    return self;
}

- (id)initWithImage:(UIImage *)image
{
    self = [super initWithImage:image];
    if (self) {
        //允许用户交互
        self.userInteractionEnabled = YES;
    }
    return self;
}

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //保存触摸起始点位置
    CGPoint point = [[touches anyObject] locationInView:self];
    startPoint = point;

    //该view置于最前
    [[self superview] bringSubviewToFront:self];
}

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    //计算位移=当前位置-起始位置
    CGPoint point = [[touches anyObject] locationInView:self];
    float dx = point.x - startPoint.x;
    float dy = point.y - startPoint.y;

    //计算移动后的view中心点
    CGPoint newcenter = CGPointMake(self.center.x + dx, self.center.y + dy);

    /* 限制用户不可将视图托出屏幕 */
    float halfx = CGRectGetMidX(self.bounds);
    //x坐标左边界
    newcenter.x = MAX(halfx, newcenter.x);
    //x坐标右边界
    newcenter.x = MIN(self.superview.bounds.size.width - halfx, newcenter.x);

    //y坐标同理
    float halfy = CGRectGetMidY(self.bounds);
    newcenter.y = MAX(halfy, newcenter.y);
    newcenter.y = MIN(self.superview.bounds.size.height - halfy, newcenter.y);

    //移动view
    self.center = newcenter;
}

@end

  

拖动视图

时间: 2024-08-15 12:21:21

拖动视图的相关文章

制作滚动视图(ScrollView)

怎样判断是否应当使用滚动视图 所谓的滚动视图,是指一个可以滑动的视窗,视窗大小和位置固定不变,视窗内的内容用户可以通过手指滑动或者拖动滚动天来进行滚动浏览. 滚动视图的目的是为了解决同类内容过多,一个UI版面显示不下的情况.如果同类内容过多,一般可以采取设置多个页面,然后通过翻页浏览的方式来浏览,但是很明显,滚动视图会比翻页更方便,因为在移动上可以很方便地花瓶进行滚动,在PC上可以通过鼠标的滚动进行滚动. 当需要判断是否应该使用滚动视图制作UI时,可以遵循以下规律: (1)有很多同类内容一个版面

android可拖动排序GridView实现

经常使用今日头条.网易新闻的同学们应该都会注意到用于管理多个频道的可拖动排序GridView,下面介绍一下可拖动的DragGridView的实现方法.代码放在GitHub上https://github.com/zhaoyu87/DragGridView,需要的同学可以下载 DragGridView继承自GridView,当长按选中某个item进行拖动,放手更新GridView顺序: 1.重写onTouchEvent响应拖动事件:被按下时记录按下坐标:拖动时更新被拖动视图显示:放开时更新排序 2.

xpages视图

新建一个xpages页面名字为myView,在容器控件里拖动视图到空白页.数据源选ALL(所有文档) 选中显示的视图为 主题  时间 选中主题列 在属性栏 显示选项中选中 将此列中的值显示为链接 复选框 新建myTopic页面,添加数据源 和 表单 选中 subject web categories  body 三项 将其拖拽到空白页面上 添加两个按钮 用来保存和取消 按钮类型选择保存和取消就可以了.在属性栏中 xpage下一页中两项都选中myView 无论提交成功或者失败或者取消都会跳转到my

iOS 9应用开发教程之ios9的视图

iOS 9应用开发教程之ios9的视图 了解IOS9的视图 在iPhone或者iPad中,用户看到的和摸到的都是视图.视图是用户界面的重要组成元素.本节将主要讲解ios9视图的添加.删除以及位置和大小的设置等内容. ios9视图库介绍 在视图库中存放了iOS开发中所需的所有视图.开发者可以在创建好iOS应用程序的项目以后,打开画布的设计界面,这时在工具窗口的下半个窗口中,单击Show the Object library图标,就会显示出视图库,如图1.46所示. 图1.46  视图库 在视图库中

IOS总结(学习过程中整理的笔记)

MVC模式:(model+view+controller):是一种帮你把代码功能和显示划分出来的设计模式: model:较为底层的数据引擎,负责管理实体中所继承的数据: view:和用户交互界面: controller:连接二者的桥梁: cocoa frameworks 有两个框架: foundation foundation  是cocoa中最基本的一些类:再mac应用程序中负责对象管理,内存管理,容器等相关数据: uikit: uikit:为程序提供可视化的底层构架,包括窗口,视图,控件类和

iOS开发——UI篇Swift篇&UIScrollView

UIScrollView 1 //返回按钮事件 2 @IBAction func backButtonClick() 3 { 4 self.navigationController?.popViewControllerAnimated(true) 5 } 6 7 //创建滚动视图 8 var mainScrollView:UIScrollView! 9 10 var view1:UIView! 11 var view2:UIView! 12 var view3:UIView! 13 14 //创

iOS 常识总结

1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit; NSDateC

开发者必须知道这五款工具

任何高明的程序员都不可能一次性写出完美的代码,因此APP测试以及调试就成了开发者们必修的一项技能.如果掌握一些工具可以让开发者们事半功倍,所以本文介绍了五款诊断调试工具,可以帮助我们对代码.UI界面等进行调试. TestBird 这是国内大名鼎鼎的手游和APP云测平台,能提供APP和游戏的自动化测试.真人体验测试.服务器压力测试.TestBird目前已经拥有超过2000款手机,能够让这些手机自动运行各类APP,并生成测试结果.测试报告中丰富的截图和日志,可以帮助开发者们快速定位BUG,提高工作效

UIScollView

iOS开发UIScrollView使用详解一.ScrollView常用方法和属性 @property(nonatomic)CGPoint contentOffset; 设置滚动的偏移量 @property(nonatomic)CGSize contentSize; 设置滑动区域 @property(nonatomic,assign) id<UIScrollViewDelegate>      delegate; 设置UIScrollView的代理 @property(nonatomic,get