介绍下项目中运用到的用 Storyboard 中实现复杂的 UITableViewCell,原先的博客也实现了这么个功能,但是遇到的这个界面略显复杂。

效果如下图:

Auto Layout

代码下载:

https://github.com/iYiming/YMGroupMsg

中间遇到的问题:

UILabel 如何多行

虽然 numberOfLines 已经设置为 0,但是由于分别在 iPhone,iPad 上测试都出现不能换行现象,问题是没有设置 preferredMaxLayoutWidth 属性,但是不能再 Xcode 属性面板里设置,而需要动态的在代码里实现。

在 YMGroupMsgTextCell 中设置,如下代码:
kScreenWidth 为当前设备屏幕的宽度。

1
2
3
4
5
- (void)awakeFromNib {
// Initialization code
self.groupValueLabel.preferredMaxLayoutWidth = kScreenWidth - 30;
self.contentTextLabel.preferredMaxLayoutWidth = kScreenWidth - 30;
}

约束冲突

中间出现了好多错误冲突,红色的那种,出于不了解情况,出现这种错误就不知道怎么解决。但是 Xcode 提供了很好的解决冲突的方式,通过改变约束的优先级来解决,根据 Xcode 提示的解决的办法一步步弄好就 OK 了。

Xcode 出现了项目警告(不是约束警告)

在 Xcode 6 下开发时,使用 autolayout的Storyboard 出现警告:Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0

原因:Xcode 6 下默认开启自动设置 UILabel 的 preferredMaxLayoutWidth 的属性,而自动的特性只支持 iOS 8,故导致这个警告,如果想兼容 iOS 7 则需要消除。

解决方法:设置固定的 preferredMaxLayoutWidth(勾选 Explicit)。

Auto Layout

参考文章:
http://blog.sina.com.cn/s/blog_5fde60890102v3wj.html