我之前使用iOS 11之前的代码来自定义UISearchController搜索栏的外观:
var searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.setDefaultSearchBar()
searchController.searchResultsUpdater = self
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
} else {
tableView.tableHeaderView = searchController.searchBar
}
extension UISearchBar {
func setDefaultSearchBar() {
self.tintColor = UIColor.blue
self.searchBarStyle = .minimal
self.backgroundImage = UIImage(color: UIColor.clear)
let searchBarTextField = self.value(forKey: "searchField") as! UITextField
searchBarTextField.textColor = UIColor.white
searchBarTextField.tintColor = UIColor.blue
searchBarTextField = .dark
}
}
Run Code Online (Sandbox Code Playgroud)
但是,更新到iOS 11并添加任何自定义的UISearchController一部分(除了键盘外观证明我的代码已被调用)无法显示.这是一个错误还是我错误地实现了它? navigationItem
编辑: 附件是运行iOS 10(第一个)和iOS 11的设备的两个屏幕截图
编辑2:到目前为止,关于这个问题的大部分注意力都集中在文本的颜色上UISearchBar.我在看比这更多-的背景颜色,色调的颜色,搜索指示器和清除按钮颜色等所有不能尽管是完全能够在iOS的10这么做运行iOS 11的设备上进行定制.
我正在尝试将包含通用 RGB 颜色空间中的颜色的字符串转换为 Swift 中的 UIColor。例如,典型的字符串如下所示:
0.121569 0.129412 0.156863 1
Run Code Online (Sandbox Code Playgroud)
使用 macOS 中的颜色选择器,我发现这些值使用的是 Generic RGB 颜色空间。
但是,当我尝试将这些值转换为 UIColor 时,它使用 sRGB 颜色空间。
let red = CGFloat((components[0] as NSString).doubleValue)
let green = CGFloat((components[1] as NSString).doubleValue)
let blue = CGFloat((components[2] as NSString).doubleValue)
let alpha = CGFloat((components[3] as NSString).doubleValue)
print(UIColor(red: red, green: green, blue: blue, alpha: alpha))
// Log Result: NSCustomColorSpace sRGB IEC61966-2.1 colorspace 0.121569 0.129412 0.156863 1
Run Code Online (Sandbox Code Playgroud)
因此,我的应用程序中显示了不同的颜色。我通过将 Color Picker 中的颜色空间更改为 IEC61966-2.1 来确认这一点,它确实显示了不同的值:
知道如何将通用 RGB 值转换为正确的 UIColor 值吗?
编辑为了澄清起见,我无法将字符串中的颜色值更改为另一种方案,因为我正在从 XML 文件中的外部源读取颜色
尽管现在不是复制Facebook某些设计的一周,但我希望能够设计自己的以下版本的反应指标视图。
我UIImageView在上面的相同位置排了三个s。问题在于,与Facebook不同,背景颜色可能会发生变化(即位于顶部UIBlurEffect),因此我无法将边框颜色设置为白色。
我认为这样设置是有意义的borderColor:
imageViewOne.layer.borderColor = UIColor.clear.cgColor
imageViewOne.layer.borderWidth = 2
Run Code Online (Sandbox Code Playgroud)
但是,底层imageViewTwo显示在边框中,而不是背景色。
到目前为止,我有这个:
将不胜感激如何使这项工作的一些帮助/想法-我正在考虑口罩,但不确定是否可以。这是正确的解决方案,并且b。如何达到预期的效果。为了明确起见,我无法将边框颜色设置为常数,因为它将随改变UIBlurEffect。
ios ×3
swift ×3
color-space ×1
git ×1
ios11 ×1
iphone ×1
macos ×1
uicolor ×1
xcode ×1
xcode9-beta ×1