您的位置:首页 > 其它

项目总结实用转载

2016-09-09 11:42 381 查看

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博!

点击return取消textView 的响应者

[objc] view
plain copy

 





- (BOOL)textFieldShouldReturn:(UITextField *)textField  

{  

    [_contactTextFiled resignFirstResponder];  

    return YES;  

}  

  

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{  

     

    if([text isEqualToString:@"\n"]){  

         

        [textView resignFirstResponder];  

        [_contactTextFiled becomeFirstResponder];  

        return YES;  

    }  

    return YES;  

}  

iOS一行代码将所有子视图从父视图上移除

这里主要利用了一个
makeObjectsPerformSelector:
函数。这个函数可以在很多场景下使用从而简化代码。

[objc] view
plain copy

 





[xxxView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];  

有效解决刷新单个cell或者section闪一下的问题:

[objc] view
plain copy

 





[UIView setAnimationsEnabled:NO];  

[_listTable beginUpdates];  

[_listTable reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationNone];  

[_listTable endUpdates];  

[UIView setAnimationsEnabled:YES];  

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博!

画出下列曲线:



[objc] view
plain copy

 





UIView *myCustomView = [[UIView alloc]initWithFrame:CGRectMake(0, 204,kScreenWidth, 120)];  

myCustomView.backgroundColor = [UIColor whiteColor];  

[view addSubview:myCustomView];  

  

UIBezierPath *bezierPath = [UIBezierPath bezierPath];  

[bezierPath moveToPoint:CGPointMake(0,0)];  

[bezierPath addCurveToPoint:CGPointMake(myCustomView.width, 0) controlPoint1:CGPointMake(0, 0) controlPoint2:CGPointMake(myCustomView.width/2, 40)];  

[bezierPath addLineToPoint:CGPointMake(myCustomView.width, myCustomView.height)];  

[bezierPath addLineToPoint:CGPointMake(0, myCustomView.height)];  

[bezierPath closePath];  

  

CAShapeLayer *shapLayer = [CAShapeLayer layer];  

shapLayer.path = bezierPath.CGPath;  

myCustomView.layer.mask = shapLayer;  

myCustomView.layer.masksToBounds = YES;  

当你使用 UISearchController 在 UITableView 中实现搜索条,在搜索框已经激活并推入新的 VC 的时候会发生搜索框重叠的情况:那就是 definesPresentationContext 这个布尔值!

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博!

[b]TabBar的隐藏与消失:[/b]

[objc] view
plain copy

 





- (void)hidesTabBar:(BOOL)hidden{  

    [UIView beginAnimations:nil context:NULL];  

    [UIView setAnimationDuration:0];  

     

    for (UIView *view in self.tabBarController.view.subviews){  

         

        if ([view isKindOfClass:[UITabBar class]]) {  

            if (hidden) {  

                [view setFrame:CGRectMake(view.frame.origin.x, [UIScreen mainScreen].bounds.size.height, view.frame.size.width , view.frame.size.height)];  

            }else{  

                [view setFrame:CGRectMake(view.frame.origin.x, [UIScreen mainScreen].bounds.size.height - 49, view.frame.size.width, view.frame.size.height)];  

            }  

        }else{  

            if([view isKindOfClass:NSClassFromString(@"UITransitionView")]){  

                if (hidden){  

                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, [UIScreen mainScreen].bounds.size.height)];  

                }else{  

                     

                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 49 )];  

                }  

            }  

        }  

    }  

    [UIView commitAnimations];  

}  

获取cell上按钮所在分区和行数:

[objc] view
plain copy

 





UIView *view = [sender superview]; // 获取父视图的view  

GCCollectGroupCellTableViewCell *cell = (GCCollectGroupCellTableViewCell*)[view superview]; // 获取cell  

NSIndexPath *indexPath = [_listTable indexPathForCell:cell]; // 获取cell对应的分区  

NSLog(@"%@",detailArr[indexPath.section-1][indexPath.row][@"comname"]);  

NSAttributedString 与NSString互转:

[objc] view
plain copy

 





NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[_CompanyFileds.comname dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];  

_CompanyFileds.comname = attrStr.string;  

监控UITextField 变化:

[objc] view
plain copy

 





// 注册监听  

    [[NSNotificationCenter defaultCenter]postNotificationName:UITextFieldTextDidChangeNotification object:nil];  

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeForKeyWord:) name:UITextFieldTextDidChangeNotification object:nil];  

  

  

// 监听_pageTextField.text变化  

- (void)changeForKeyWord:(NSNotification *)sender  

{  

    [self checkNum:_pageTextField.text];  

}  

- (BOOL)checkNum:(NSString *)str  

{  

    NSString *regex = @"^[0-9]+(.[0-9]{2})?$";  

    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];  

    BOOL isMatch = [pred evaluateWithObject:str];  

    if (!isMatch && _pageTextField.text.length>0) {  

        UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:nil message:@"页码只能输入数字哦" delegate:self cancelButtonTitle:@"重新输入" otherButtonTitles:nil, nil nil];  

        alertView.delegate = self;  

        [alertView show];  

        return NO;  

    }  

    return YES;  

}  

监听UITextField的点击事件

[objc] view
plain copy

 





[[NSNotificationCenter defaultCenter]postNotificationName:UITextFieldTextDidBeginEditingNotification object:nil];   

        [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(enterEdited:) name:UITextFieldTextDidBeginEditingNotification object:nil];   

   

- (void)enterEdited:(NSNotification *)sender   

{   

    事件写这里!希望帮到你!   

}   

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博!

解决添加到父视图手势影响子视图手势的解决办法:(手势冲突)

[objc] view
plain copy

 





//方法一:  

#pragma mark--UIGestureRecognizerDelegate  

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch  

{  

    if([touch.view isKindOfClass:[UIButton class]]||[touch.view isKindOfClass:[UITableViewCell class]]||[touch.view isKindOfClass:[UITextField class]]||[touch.view isKindOfClass:[UITextView class]])  

    {  

        return NO;  

    }  

    return YES;  

}  

[objc] view
plain copy

 





//方法二:  

//UIView的exclusiveTouch属性  

//通过设置[self setExclusiveTouch:YES];可以达到同一界面上多个控件接受事件时的排他性,从而避免一些问题。  

UITextField 边框样式及内容调整:

[objc] view
plain copy

 





//1. 设置的时候在ib里面记得选择无边框的,要不然随便你设置,都是无效的,也是坑死了。  

  _textBoxName.layer.borderWidth=1.0f;  

    _textBoxName.layer.borderColor=[UIColorcolorWithRed:0xbf/255.0fgreen:0xbf/255.0fblue:0xbf/255.0falpha:1].CGColor;  

  

   //2.在uitextfield 中文字最左边距离左侧边框的距离  

    _textBoxName.leftView=[[UIViewalloc] initWithFrame:CGRectMake(0,0, 16,51)];  

    _textBoxName.leftViewMode=UITextFieldViewModeAlways;  

图片旋转控制:

[objc] view
plain copy

 





#pragma mark ----- 更新按钮动画  

- (void)rotate360DegreeWithImageViews:(UIImageView *)myViews{  

    CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];  

    rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ];  

    rotationAnimation.duration = 1.0;  

    rotationAnimation.cumulative = YES;rotate360DegreeWithImageViews  

    rotationAnimation.repeatCount = 100000;  

    [myViews.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];  

}  

[myViews.layer removeAllAnimations]; // 停止  

改变cell的选中颜色:

[plain] view
plain copy

 





cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame];  

cell.selectedBackgroundView.backgroundColor = COLOR_BACKGROUNDVIEW;  

不需要任何颜色可以这么设置:  

cell.selectionStyle = UITableViewCellSelectionStyleNone;  

取整问题:

[plain] view
plain copy

 





Objective-C拓展了C,自然很多用法是和C一致的。比如浮点数转化成整数,就有以下四种情况。  

1.简单粗暴,直接转化  

  

  

float f = 1.5; int a; a = (int)f; NSLog("a = %d",a);  

输出结果是1。(int)是强制类型转化,丢弃浮点数的小数部分。  

  

2.高斯函数,向下取整  

  

  

float f = 1.6; int a; a = floor(f); NSLog("a = %d",a);  

输出结果是1。floor()方法是向下取整,类似于数学中的高斯函数 [].取得不大于浮点数的最大整数,对于正数来说是舍弃浮点数部分,对于复数来说,舍弃浮点数部分后再减1.  

  

3.ceil函数,向上取整。  

  

  

float f = 1.5; int a; a = ceil(f); NSLog("a = %d",a);  

输出结果是2。ceil()方法是向上取整,取得不小于浮点数的最小整数,对于正数来说是舍弃浮点数部分并加1,对于复数来说就是舍弃浮点数部分.  

  

4.通过强制类型转换四舍五入。  

  

float f = 1.5; int a; a = (int)(f+0.5); NSLog("a = %d",a);  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: