私有KVC
iOS不允许valueForKey
、setValue: forKey
获取和设置私有属性,需要使用其它方式修改
如:
[textField setValue:[UIColor red] forKeyPath:@"_placeholderLabel.textColor"];
//替换为
textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"输入"attributes:@{NSForegroundColorAttributeName: [UIColor red]}];
UISearchBar显示问题
TextField
升级到iOS13,UISearchController
上的SearchBar
显示异常,查看后发现对应的高度只有1px,目前没找到具体导致的原因,解决办法是使用KVO监听frame值变化后设置去应该显示的高度
黑线处理crash
之前为了处理搜索框的黑线问题会遍历后删除UISearchBarBackground
,在iOS13会导致UI渲染失败crash;解决办法是设置UISearchBarBackground
的layer.contents为nil
public func clearBlackLine() {
for view in self.subviews.last!.subviews {
if view.isKind(of: NSClassFromString("UISearchBarBackground")!) {
view.backgroundColor = UIColor.white
view.layer.contents = nil
break
}
}
}
TabBar红点偏移
如果之前有通过TabBar上图片位置来设置红点位置,在iOS13上会发现显示位置都在最左边去了。遍历UITabBarButton
的subViews
发现只有在TabBar
选中状态下才能取到UITabBarSwappableImageView
,解决办法是修改为通过UITabBarButton
的位置来设置红点的frame