iOS开发笔记(2)
2015-12-15 18:52
573 查看
iOS开发笔记(2)
关于Masonry包
Masonry就是一个自动布局框架,用起来很容易上手,也很方便。官方给的源码例子:
UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10); [view1 mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(superview.mas_top).with.offset(padding.top); //with is an optional semantic filler make.left.equalTo(superview.mas_left).with.offset(padding.left); make.bottom.equalTo(superview.mas_bottom).with.offset(-padding.bottom); make.right.equalTo(superview.mas_right).with.offset(-padding.right); }];
or even shorter:
[view1 mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(superview).with.insets(padding); }];
大于等于、小于等于:
make.width.greaterThanOrEqualTo(@200); make.width.lessThanOrEqualTo(@400)
除此之外,我还发现了Masonry一个特别好用的方法:倍数
make.width.equalTo(self.view.mas_width).multipliedBy(0.8);
但是在用的过程中,我还是发现了一些问题:
使用了Masonry的相对布局后,好像无法获取控件的高度了
RadioButton也无法使用Masonry相对布局
使用Masonry相对布局之后,Label有的时候有些功能无效,比如lineBreakMode和numberOfLines。具体什么情况可以用什么情况无效还没有测试,只是有的时候会遇到这种情况。
Label换行
label.lineBreakMode = UILineBreakModeWordWrap; label.numberOfLines = 0;
点击空白处收回键盘
在init View的时候加上这几句代码即可://点击空白处收回键盘 self.userInteractionEnabled = YES; UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fingerTapped:)]; [self.view addGestureRecognizer:singleTap];
NSNumber
NSNumber类型的要用@()括起来,比如@(3)UIScrollView
UIScrollView与其他view不同的是,要在最后设置一下contentSize:self.scrollView.contentSize = CGSizeMake(width, height);
NSString
连接:label.text = [model.grade stringByAppendingFormat:@"%@%@字",@" ",model.letter_count];
去掉字符串中的换行回车:
NSString *str = [model.content stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]
whitespaceCharacterSet 去除空格
newlineCharacterSet 去除回车
whitespaceAndNewlineCharacterSet 去除空格和回车
图片名称大小写问题
图片名称如果是大写,代码中使用小写的时候,在模拟机上跑可以,但是真机上就不行了!判断字符串是否为空
判断字符串是否为空的时候,我以前习惯用[str isEqualToString@”“]
但实际上有更好的办法:判断字符串的长度:
!str.length
Label attributedText
- (NSMutableAttributedString *)contentAttributedString:(NSString *)text { NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:text]; UIFont *font = [UIFont fontWithName:@"Heiti SC" size:16]; NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; style.lineBreakMode = NSLineBreakByWordWrapping; style.lineSpacing = 4;//行间距 style.paragraphSpacing = 0.5 * font.lineHeight;//段间距 style.hyphenationFactor = 1.0; style.alignment = NSTextAlignmentLeft; [string addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0,string.length)]; [string addAttribute:NSFontAttributeName value:kSYSTEMFONT(16) range:NSMakeRange(0,string.length)]; return string; }
然后调用:
label.attributedText = [self contentAttributedString:contentLabel.text];
其他需要注意的地方
self.currentHeight 最好使用CGFloat类型,虽然NSIngteger也可以为button加tag的时候,tag的命名要规范,不要用数字,不然加pingback别人看不懂
.h文件最好不要import头文件,因为会增加编译时间。如果需要的话,可以用
@class类,然后再.m文件里import头文件
不要再使用
!=0这种东西了!!!
UItableView的delegate方法里,如果数组大小为0:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.array.count; }
那么
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { }
就不执行了。
所以没必要在上面那个方法中单独去判断self.array.count是否为0.
相关文章推荐
- iOS开发笔记(1)
- iOS 解决图片方向不正常的问题
- iOS正则表达式
- iOS 绘画(二)
- iOS 绘画(一)
- iOS后台长时间执行
- iOS AFNetworking请求数据(get/post)
- html5 localStorage ios8.1.1 safari兼容问题
- 如何在移动广告平台中IOS应用中集成插页式广告
- iOS 7 使用CGAffineTransformMakeRotation在autolayout布局下旋转图片变形.
- xcode7、iOS9 设置启动图片(Launch Image)
- iOS开发, 关于nslog的几种用法
- iOS url编码 7%89%B9%E6%AE%8A%E
- iOS 获取系统当前时间
- iOS单元测试
- ios NSString 与 char[] 互转--char数组
- iOS自适应行高
- iOS 9 适配,我咋还没遇到这么多坑呢呀
- iOS 图片上传使用base64或者二进制流上传头像
- iOS 宏(define)与常量(const)的正确使用