• 拖动视图


    @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
    

      

  • 相关阅读:
    关于JS事件冒泡与JS事件代理(事件委托)
    异步、同步和阻塞、非阻塞
    大数据高并发
    前段clam安装
    JavaScript动态修改CSS
    键盘按键js效果
    键盘键值表总结
    移动端不可缩放
    JS基本语法
    计算几何——ICPC Latin American Regional Contests 2019 B
  • 原文地址:https://www.cnblogs.com/joesen/p/3842614.html
Copyright © 2020-2023  润新知