ios - 如何为 carbonTabSwipeNavigation CarbonKit Cocoapods 设置颜色渐变
问题描述
我是 iOS 新手。我想在 CarbonTabSwipeNavigation 上应用渐变颜色。我尝试将渐变应用到 CarbonTabSwipeNavigation 的工具栏,但它没有发生我尝试使用静态颜色代码
carbonTabSwipeNavigation.toolbar.isTranslucent = true
var color1 = hexStringToUIColor(hex: "#00275E")
carbonTabSwipeNavigation.carbonSegmentedControl?.backgroundColor = color1
carbonTabSwipeNavigation.setIndicatorColor(UIColor.white) //tabBar font
carbonTabSwipeNavigation.setSelectedColor(UIColor.white, font: UIFont.boldSystemFont(ofSize: 14))
解决方案
首先,在您的项目中添加这些扩展。
extension UINavigationBar {
func setGradientBackground(colors: [UIColor]) {
var updatedFrame = bounds
updatedFrame.size.height += self.frame.origin.y
let gradientLayer = CAGradientLayer(frame: updatedFrame, colors: colors)
setBackgroundImage(gradientLayer.createGradientImage(), for: UIBarMetrics.default)
}
}
extension UIView {
func setGradientBackgroundOnView(colors: [UIColor]) {
var updatedFrame = bounds
// updatedFrame.size.height += self.frame.origin.y
let gradientLayer = CAGradientLayer(frame: updatedFrame, colors: colors)
self.layer.insertSublayer(gradientLayer, at: 0)
}
}
extension CAGradientLayer {
convenience init(frame: CGRect, colors: [UIColor]) {
self.init()
self.frame = frame
self.colors = []
for color in colors {
self.colors?.append(color.cgColor)
}
startPoint = CGPoint(x: 0, y: 1)
endPoint = CGPoint(x: 1, y: 1)
}
func createGradientImage() -> UIImage? {
var image: UIImage? = nil
UIGraphicsBeginImageContext(bounds.size)
if let context = UIGraphicsGetCurrentContext() {
render(in: context)
image = UIGraphicsGetImageFromCurrentImageContext()
}
UIGraphicsEndImageContext()
return image
}
}
然后根据您的要求调用此方法。
示例:-如果您想为您的应用设置gradient
颜色navigationbar
,请调用使用此
self.navigationController?.navigationBar.setGradientBackground(colors: [UIColor.black, UIColor.red])
推荐阅读
- jquery - 如何调整此验证功能以适用于所有具有必填字段的表单?
- reactjs - 如何使用反应功能组件更改 html 元标记
- google-chrome-extension - 拒绝执行内联脚本
- docker-compose - 基于当前操作系统的条件图像使用
- amazon-web-services - 如何在 Codebuild 中将 AWS 凭证传递给 docker compose 网络
- c - 在getchar()循环中如何检测C字符串中的最后一个字符
- java - 如何在程序运行后将原始用户输入显示到最终输出中?
- azure-pipelines-release-pipeline - 如何在 Azure-DevOPS 发布管道中使用 XML 转换进行 IIS 部署?
- java - findall() 并不总是从数据库中提取值吗?
- r - Filter() 使用来自变量的值作为参数