xcode 的那些坑

headerView/footerView

问题描述:

只实现tableView:heightForFooterInSection:或tableView:heightForHeaderInSection:方法返回section的header/footer高度时header/footer会使用默认值,如下图,只返回了footer的高度,没有返回footer的对象。

xcode 的那些坑_第1张图片

解决方法(2种):

需要控制header/footer的高度还需要实现

tableView:viewForHeaderInSection:或tableView:viewForFooterInSection:方法。如图,即使是返回nil也会使高度设置生效

xcode 的那些坑_第2张图片

通过将tableview新增的estimatedSectionHeaderHeight和estimatedSectionFooterHeight属性设置为0,如下图

xcode 的那些坑_第3张图片

BarButtonItem

设置负width失效

问题描述:

像往常一样,创建了两个barButtonItem,一个作为按钮,一个作为调整宽度的,将width设置为了-10,但是Xcode9编译运行后,并不是想要的按钮的位置向右缩减了10,如图:

xcode 的那些坑_第4张图片

但是在设置其width>0是会生效的

解决方法:

创建一个UIButton并设置其title/imageEdgeInsets,然后通过customView创建UIBarButtonItem。

xcode 的那些坑_第5张图片

设定了样式后点击样式

问题描述:

在Xcode9之前,通过-setTitleTextAttributes:forState:方式设定UIBarButtonItem的样式,只需要设定UIControlStateNormal的时候即可同时让其他状态也会使用相同的样式,而Xcode9只会设置Normal的样式,在按下高亮时还是默认的样式。

xcode 的那些坑_第6张图片

解决方法(2种):

同样给UIControlStateHighlighted状态设定一下样式。

xcode 的那些坑_第7张图片

或者将UIBarButtonItem使用UIButton作为customView创建,UIButton没有出现这个问题。

xcode 的那些坑_第8张图片

ToolBar上Item点击失效

问题描述:

创建一个全屏的半透明View并在这个View上放置一个tapGesture

创建一个toolBar放在这个View上

通过-initWithTitle:target:action:方法创建一个UIBarButtonItem放置在toolbar上

点击这个UIBarButtonItem,发现其有高亮状态但是点击被tapGesture响应

问题仅在Xcode9+iOS11上出现。Xcode8+iOS11或Xcode9+iOS10无法复现,大致样式如下图

xcode 的那些坑_第9张图片

解决方法(2种):

个人更倾向于第二种

再创建一个View放置在上半截位置上,然后将tapGesture添加给这个只有半截的View上

将UIBarButtonItem的初始化方法改为通过customView初始化,使用UIButton作为customView

透明导航栏约束

部分宏定义失效

我们使用的一个库中check_compile_time()报错,但是使用Xcode9无法跳转其定义,

App图标丢失

问题描述:

使用Xcode9+CocoaPods的工程在编译运行后,会出现AppIcon丢失的问题

解决方法(2种):

通过编写podfile脚本

调整Build Pharses顺序,将Copy Bundle Resources移动到最后一个进行解决

xcode 的那些坑_第10张图片

用 UILabel  和 UIImageView  加线 背景颜色的色值一样,出来效果却不一样,用label颜色更深,用imageview才是我们想要的效果

你可能感兴趣的:(xcode 的那些坑)