• objective-c遮罩效果一个工具类


    最近赶了一个项目,项目中涉及到遮罩效果,经过与同事跟网友们的讨论之后,在我那龌龊的代码上修改出了一个遮罩效果。

    在viewcontroller里面的我的通过按钮来进行调用的,具体调用自己实现吧

    View Code
    View Code
      1 #import "Mask.h"
      2 #define kImageSize  128.0
      3 @implementation Mask
      4 @synthesize delegate = delegate_;
      5 @synthesize speed;
      6 @synthesize isStop;
      7 
      8 - (id)init;
      9 {
     10     if (self = [super init]) {
     11         
     12     }
     13     return (self);
     14 }
     15 //对外开放init方法
     16 - (void)maskInitTap:(NSString*)oneName :(NSString*)twoName:(UIView*)maskView
     17 {
     18 //    tempName_ = oneName;
     19     maskOneName_ = oneName;
     20     maskTwoName_ = twoName;
     21     myMaskUIView_ = maskView;
     22  
     23 //    maskTimer_ = 0.045;
     24     chenMAX_ = NO;
     25     //目标显示层图片
     26     UIImageView *showImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:maskOneName_]];
     27     showImage.frame = MAXCHENRECT;
     28     [myMaskUIView_ addSubview:showImage];
     29     //消失层图片
     30     UIImageView *disappearImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:maskTwoName_]];
     31     disappearImage.frame = MAXCHENRECT;
     32     [myMaskUIView_ addSubview:disappearImage];
     33     
     34     //预留覆盖消失层图片“添加指针样式图片”
     35     MaskImageView_ = [[UIImageView alloc]init];
     36     MaskImageView_.frame = MINCHENRECT;
     37     posiImageView_ = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"指针.png"]];
     38 //    [myMaskUIView_ addSubview:posiImageView_];
     39 //    posiImageView_.center = myMaskUIView_.center;
     40     NSLog(@"x===========%f,y==========%f",zhizhengPosition_.x,zhizhengPosition_.y);
     41     //遮罩层图片
     42     maskLayer_ = [CALayer layer];
     43     maskLayer_.frame = MINCHENRECT;
     44     maskLayer_.contents = (id)[[UIImage imageNamed:@"maskImage.png"]CGImage];
     45     disappearImage.layer.mask = maskLayer_;
     46     disappearImage.layer.masksToBounds = YES;
     47     //ondrawtap调用部分
     48     timerControll_ = [NSTimer scheduledTimerWithTimeInterval:maskTimer_ target:self selector:@selector(OnDrawTap) userInfo:nil repeats:YES];
     49     
     50     
     51     isStop = YES;
     52     speed = -1;
     53 }
     54 
     55 - (void)setSpeedOne
     56 {
     57     int i = 3;
     58     zhizhengPosition_ = CGPointMake(0.2, 5.0);
     59     myMaskPoint_.y = myMaskPoint_.y + i;
     60     
     61     MaskImageView_.center = myMaskPoint_;
     62     
     63     posiImageView_.center = CGPointMake(684, myMaskPoint_.y - 383);
     64     maskLayer_.position = MaskImageView_.center;
     65     
     66     [myMaskUIView_ addSubview:posiImageView_];
     67 }
     68 - (void)setSpeedTwe
     69 {
     70     int i = 5;
     71     zhizhengPosition_ = CGPointMake(0.2, 5.0);
     72     myMaskPoint_.y = myMaskPoint_.y + i;
     73     MaskImageView_.center = myMaskPoint_;
     74     posiImageView_.center = CGPointMake(684, myMaskPoint_.y - 383);
     75     maskLayer_.position = MaskImageView_.center;
     76 }
     77 - (void)setSpeedThree
     78 {
     79     int i = 15;
     80     zhizhengPosition_ = CGPointMake(0.2, 15.0);
     81     myMaskPoint_.y = myMaskPoint_.y + i;
     82     
     83     MaskImageView_.center = myMaskPoint_;
     84     
     85     posiImageView_.hidden = YES;
     86     posiImageView_.center = CGPointMake(684, myMaskPoint_.y - 453);
     87     maskLayer_.position = MaskImageView_.center;
     88 }
     89  
     90 //决定遮罩自动下落或者停止的方法//:(CGPoint)acceleration 
     91 - (void)OnDrawTap
     92 {
     93     NSLog(@"this is runn%f---------%d",myMaskPoint_.y,speed);
     94     myMaskPoint_ = MaskImageView_.center;
     95      [self setSpeedOne];
     96     if (myMaskPoint_.y <= 1115 && myMaskPoint_.y > 0) 
     97     {
     98         isStop = NO;
     99         if (!isStop) {
    100             switch (speed) {
    101                 case 1:
    102                     [self setSpeedOne];
    103                     break;
    104                 case 2:
    105                     [self setSpeedTwe];
    106                     break;
    107                 case 3:
    108                     [self setSpeedThree];
    109                     break;
    110                 default:
    111                     break;
    112             }
    113         }
    114   
    115         if (myMaskPoint_.y >1115) {
    116             
    117             if (delegate_ != nil) {
    118                 
    119                 [delegate_ isStop];
    120             }
    121             NSLog(@"main is stop");
    122             isStop = YES;
    123         }
    124  
    125     } 
    126     else {
    127         [self CloseTimer];
    128         isStop = YES;
    129     }
    130 }
    131 //获得chenMAX_的值;
    132 - (BOOL)getChenMAX
    133 {
    134     return chenMAX_;
    135 }
    136 //设置chenMAX_的值;
    137 - (void)setChenMAX:(BOOL)chenMAX
    138 {
    139     chenMAX_ = chenMAX;
    140 }
    141 - (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
    142 {
    143     CGPoint curPos = [gestureRecognizer locationInView:myMaskUIView_];
    144     if (curPos.x > 0 && curPos.x < 72) {
    145         return NO;
    146     }
    147     return YES;
    148 }
    149 //获得目标显示层与获得消失层图片的名称
    150 - (NSString*)getOneName
    151 {
    152     return maskOneName_;
    153 }
    154 - (NSString*)getTwoName
    155 {
    156     return maskTwoName_;
    157 }
    158 //设置目标显示层与设置消失层图片名称
    159 - (void)setOneName:(NSString*)setOneName
    160 {
    161     maskOneName_ = setOneName;
    162 }
    163 - (void)setTwoName:(NSString*)setTwoName
    164 {
    165     maskTwoName_ = setTwoName;
    166 }
    167 //获取时间与设置时间
    168 - (float)getTimer
    169 {
    170     return maskTimer_;
    171 }
    172 - (void)setTimer:(float)setTime
    173 {
    174     maskTimer_ = setTime;
    175 }
    176 //获得当前点与获得增加点
    177 - (CGPoint)getMyMaskPoint
    178 {
    179     return myMaskPoint_;
    180 }
    181 - (CGPoint)getPosPosition
    182 {
    183     return zhizhengPosition_;
    184 }
    185 //设置当前点与设置增加点
    186 - (void)setMyMaskPoint:(CGPoint)setMyMaskPoint
    187 {
    188     myMaskPoint_ = setMyMaskPoint;
    189 }
    190 - (void)setPosPosition:(CGPoint)setPosPosition
    191 {
    192     zhizhengPosition_ = setPosPosition;
    193 }
    194 //释放方法
    195 - (void)CloseTimer
    196 {
    197     [timerControll_ invalidate];
    198     timerControll_ = nil;
    199     
    200     [posiImageView_ removeFromSuperview];
    201     posiImageView_ = nil;
    202     
    203     [MaskImageView_ removeFromSuperview];
    204     MaskImageView_ = nil;
    205 }
    206 
    207 
    208 
    209 ////设置下落速度方法,接受传入点控制当前点位置
    210 //- (void)setSpeedTap:(float)acceleration
    211 //{
    212 //    int i;
    213 //    if (maskTimer_ > 0.02) 
    214 //    {
    215 //        i = 1;
    216 //        zhizhengPosition_ = CGPointMake(0.2, 1.0);
    217 //        myMaskPoint_.y = myMaskPoint_.y + i;
    218 //    }
    219 //    else
    220 //    {
    221 //        i = 3;
    222 //        zhizhengPosition_ = CGPointMake(0.2, 3.0);
    223 //        myMaskPoint_.y = myMaskPoint_.y + i;
    224 //    }
    225 //
    226 //    MaskImageView_.center = myMaskPoint_;
    227 //    if (i == 1) {
    228 //        posiImageView_.center = CGPointMake(684, myMaskPoint_.y - 376);
    229 //    }
    230 //    if (i == 3) {
    231 //        posiImageView_.center = CGPointMake(684, myMaskPoint_.y - 383);
    232 //    }
    233 //    maskLayer_.position = MaskImageView_.center;
    234 //
    235 //}
    236 
    237 
    238 @end
    吾屋无污,吴捂屋污,诬吾污屋,吾晤吴污,吾无物污,吴侮污吾,吾忤吴屋,悟吴诬吾,污屋吴污,吴侮吾污,吾勿武侮,吾唔吴误,诬侮污吾,吾屋悟忤.
  • 相关阅读:
    51nod 1050 循环数组最大子段和
    51nod 1183 编辑距离
    百度之星初赛一 补题
    jquery click嵌套 事件重复注册 多次执行的问题
    Shell变量赋值语句不能有空格
    Linux得到某个文件夹内文件的个数
    Ubuntu14.04下sogou输入法的输入框只显示英文不显示中文的问题
    Eclipse中mybatis的xml文件没有提示,出现the file cannot be validated as the XML definition.....
    整理一下postgresql的扩展功能postgis和pgrouting的使用
    Windows应用程序未响应
  • 原文地址:https://www.cnblogs.com/chenxiangxi/p/2564063.html
Copyright © 2020-2023  润新知