更改Placehoder颜色
该私有key禁止访问了
textField.setValue(color, forKeyPath: "_placeholderLabel.textColor")
searchBar.value(forKey: "_searchField")
//替换为
textField.attributedPlaceholder = NSAttributedString.init(string: self.placeholder ?? "", attributes: [NSAttributedString.Key.foregroundColor : UIColor.red])
searchBar.value(forKey: "searchField") as! UITextField
presentViewController样式变化
在使用 presentViewController 来跳转视图时系统提供了两个参数来简化跳转的设置,modalTransitionStyle 和 modalPresentationStyle。前者为转场过渡的类型,后者为展示的样式,系统为两者都提供了多种可选样式。
展示的方式变了就看 modalPresentationStyle 的值,在iOS13前,该值默认为0,即 .fullScreen。而此时,在 iOS13 中变为了-2。
在 iOS13 中 modalPresentationStyle 的类型新增了以下类型:
UIModalPresentationAutomatic = -2
修改方法
let vc = UIViewController() // vc即需要被present的viewcontroller
vc.modalPresentationStyle = .custom
self.present(vc, animated: true, completion: nil)
夜间模式 Dark/Light
一般我们之前都是默认的,现在系统出了一个夜间模式,将以前的白色都变成了黑色,与我们UI设计不一样,因此我是采取的禁用了dark的模式.
我分别在我的BaseViewController和BaseTabBarViewController的 viewDidLoad方法里写了下面的代码.
if #available(iOS 13.0, *) {
overrideUserInterfaceStyle = .light
} else {
// Fallback on earlier versions
}
或者在info.plist设置,对应的Value为Light/Dark
image.png
TabBar红点位置偏移
如果之前有通过TabBar上图片位置来设置红点位置,在iOS13上会发现显示位置都在最左边去了。遍历UITabBarButton的subViews发现只有在TabBar选中状态下才能取到UITabBarSwappableImageView,解决办法是修改为通过UITabBarButton的位置来设置红点的frame
黑线处理
public func clearBlack() {
self.view.subviews.last?.subviews.forEach({ (view) in
if view.isKind(of: NSClassFromString("UISearchBarBackground")!) {
view.backgroundColor = UIColor.white
view.layer.contents = nil
return
}
})
}
UISegmentedControl问题
UISegmentedControl样式变化了,之前写好的
image.png
变成了这样
image.png
只需要添加这些代码就可以了
extension UISegmentedControl{
public func segmentStyle(){
if#available(iOS 13, *) {
let tintColorImage = UIColor.white.toImage(size: CGSize.init(width:self.frame.size.width, height:self.frame.size.height))
let dividerColorImage = UIColor.white.toImage(size: CGSize.init(width:1, height:self.frame.size.height))
setBackgroundImage(UIColor.white.toImage(size: CGSize.init(width:self.frame.size.width, height:self.frame.size.height)), for: .normal, barMetrics: .default)
setBackgroundImage(tintColorImage, for: .selected, barMetrics: .default)
setBackgroundImage(tintColorImage, for: .highlighted, barMetrics: .default)
setBackgroundImage(tintColorImage, for: [.highlighted, .selected], barMetrics: .default)
setDividerImage(dividerColorImage, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
setDividerImage(dividerColorImage, forLeftSegmentState: .selected, rightSegmentState: .selected, barMetrics: .default)
self.apportionsSegmentWidthsByContent = true
layer.borderColor = UIColor.white.cgColor
layer.borderWidth = 0
} else {
let dividerImage = UIColor.white.toImage(size: CGSize.init(width:1, height:self.frame.size.height))
tintColor = UIColor.clear
setDividerImage(dividerImage, forLeftSegmentState: .normal, rightSegmentState: .selected, barMetrics: .default)
setDividerImage(dividerImage, forLeftSegmentState: .selected, rightSegmentState: .normal, barMetrics: .default)
setDividerImage(dividerImage, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
}
}
}
extension UIColor {
public func toImage(size:CGSize) -> UIImage?{
var resultImage : UIImage? = nil
let rect = CGRect(x:0, y:0, width: size.width, height: size.height)
UIGraphicsBeginImageContextWithOptions(rect.size, false, UIScreen.main.scale)
guard let context = UIGraphicsGetCurrentContext() else {
return resultImage
}
context.setFillColor(self.cgColor)
context.fill(rect)
resultImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resultImage
}
}
segment.segmentStyle() //使用的时候直接segment.segmentStyle()调用就可以考虑
WebView废弃
查看API可以看到:iOS 2.0 到 iOS 11.0
在12.0就已经被废弃,部分APP使用webview时, 审核被拒
@available(iOS, introduced: 2.0, deprecated: 12.0, message: "No longer supported; please adopt WKWebView.")
open class UIWebView : UIView, NSCoding, UIScrollViewDelegate {
.........
}
未完待续...
网友评论