一.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证书 怎么也上传不上去 说不匹配。 查了很多资料才知道。只有两种方法。
五。最近做了一个本地播放视频的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。复制粘贴为英文。
解决方案:把plist文件里的Localization native development region 改为china
七。最近新加个功能 后台需要传一串以逗号分隔的商品类型。
首先你要把商品类型添加到一个数组里
NSArray * arr = @[@"123",@"123",@"123",@"123"];
NSString * arrString = [arr componentsJoinedByString:@","];
反向来说。把一个带逗号的字符串变为一个数字
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 并且不影响页面的点击 滑动事件。然后自己就闲的也试了试。
下边上干货
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的事件