开发中各种各样的小tip(持续更新)

一.textFiled 字数限制。

一般用textFileld限制字数的时候 首先想到的是代理方法。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (toBeString.length > 10 && range.length != 1  ) {
        textField.text = [toBeString substringToIndex:INPUTMAXLENTH];
         NSLog(@"最多输入10个字");
        return NO;
    }
return YES;
}

一般是用这个方法去限制。但是这样的话 只能限制住你打字。但是不能限制你智能提醒。
所以我给textField添加了一个方法 只要字符有改变就 调用方法去判断

  [_orderTimeText addTarget:self action:@selector(textFieldEditChange:) forControlEvents:UIControlEventValueChanged];

- (void)textFieldEditChange:(UITextView *)TextView{
    
    NSString * toBeString = TextView.text;
    if (toBeString.length > 10 ) {
        [[SFTipView sharedInstance] showMessage:@"最多输入50个字"];
     NSLog(@"最多输入10个字");     
    }else{
        TextView.text = toBeString;
        
    }
}

二。这两天有个需求。UI给的按钮图比较小。 但是产品要求按钮范围变大。

话不多说 直接上干货

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    CGRect bounds = self.bounds;
    //若原点击区域小于44x44,则放大热区,否则保持原大小不变
    CGFloat widthDelta = MAX(44 - bounds.size.width, 0);
    CGFloat heightDelta = MAX(44 - bounds.size.height, 0);
    bounds = CGRectInset(bounds, -0.5 * widthDelta, -0.5 * heightDelta);
    return CGRectContainsPoint(bounds, point);
}

这样就把点击范围扩大为44了。如果你想放的更大 可以改变这个值。

三。最近写了个小项目。一直用约束去做控件。 然后写到自己的项目 用frame去设置发现一直没有显示。但是打断点发现 控件都有地址。没有显示。最后总结出了一个观点

  • 约束必须要先把控件添加到contentView里 然后再设置约束
  • 设置frame呢 必须先设置frame 再把控件加入contentView里 不然不显示。

四。最近涉及了一个项目需要 需要更改极光推送的bundle iD。刚开始查了SDK 还有网页上 都没有说明 不可以更改。下载了新的p12证书 怎么也上传不上去 说不匹配。 查了很多资料才知道。只有两种方法。

开发中各种各样的小tip(持续更新)_第1张图片
极光推送

五。最近做了一个本地播放视频的demo 涉及到了一个播放内容。

播放本地地址的视频和播放网络地址的url是不同的。
网络的:

 NSString * path = @"http://dvideo.spriteapp.cn/video/2016/1117/582db0698584d_wpd.mp4";
 NSURL *url = [NSURL URLWithString:path];

本地的:

NSString * path =  [NSString stringWithFormat:@"%@/%@",documentPaths,[videoInfo objectForKey:@"fileName"]];
NSURL * url = [NSURL fileURLWithPath:path];

这样才能让player播放出来。

六。有一个新bug 测试测出来。按钮点击没翻译。但是在我的模拟器上是正常的。我拿测试机试了半天发现是好使的 不过因为屏幕小了 。然后把按钮的热区改大就好了。上代码

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    CGRect bounds = self.bounds;
    //若原热区小于44x44,则放大热区,否则保持原大小不变
    CGFloat widthDelta = MAX(SF_SIZE_SCALE(44) - bounds.size.width, 0);
    CGFloat heightDelta = MAX(SF_SIZE_SCALE(44) - bounds.size.height, 0);
    bounds = CGRectInset(bounds, -0.5 * widthDelta, -0.5 * heightDelta);
    return CGRectContainsPoint(bounds, point);
}

六。最近接了个项目特别紧。然后提测。测试提了个bug。复制粘贴为英文。

开发中各种各样的小tip(持续更新)_第2张图片
复制粘贴bug

解决方案:把plist文件里的Localization native development region 改为china

开发中各种各样的小tip(持续更新)_第3张图片
修改之后
开发中各种各样的小tip(持续更新)_第4张图片
展示中文

七。最近新加个功能 后台需要传一串以逗号分隔的商品类型。

首先你要把商品类型添加到一个数组里

   NSArray * arr = @[@"123",@"123",@"123",@"123"];
    NSString * arrString =  [arr componentsJoinedByString:@","];
开发中各种各样的小tip(持续更新)_第5张图片
log

反向来说。把一个带逗号的字符串变为一个数字

 NSArray * special = [arrString componentsSeparatedByString:@","];
    NSLog(@"%@",special);

反向变成数组

八。导航栏取消下边那道黑线

带黑线的导航

上干货

-(void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    //去除导航栏下方的横线
    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init]
        forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setShadowImage:[[UIImage alloc]init]];

}
在viewWillAppear里加入这段代码就 oK

![修改之后的navBar](http://upload-images.jianshu.io/upload_images/1954780-ccd439907938c49d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

九。自定义页面添加logo

同事需要一个功能 一个页面里边添加logo 并且不影响页面的点击 滑动事件。然后自己就闲的也试了试。

viewWithLogo.gif

下边上干货

   UIView *  markView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 375, self.tableView.contentSize.height)];

    markView.backgroundColor = [[UIColor clearColor] colorWithAlphaComponent:0];
    markView.alpha = 0.5;
    markView.userInteractionEnabled = NO;
    self.view.userInteractionEnabled = YES;
    
    for (int i = 0; i < 20; i++) {
      
        UILabel * Marklabel = [[UILabel alloc]initWithFrame:CGRectMake(0, i * 100, 500, 50)];
        Marklabel.text = @"春风十里 不如你 春风十里不如你春风十里 不如你";
        Marklabel.textColor = [UIColor redColor];
    
        [markView addSubview:Marklabel];
        Marklabel.transform = CGAffineTransformRotate(Marklabel.transform, M_PI_4);
    }
    [self.tableView addSubview:markView];
}
主要是给tableview添加了一个蒙层。然后让他也相应事件。maskView和Self.view设置 交互的顺序不能改变。这样才能让他相应tableView的事件

你可能感兴趣的:(开发中各种各样的小tip(持续更新))