办法1:

问题界面

需求: 导航栏和HeaderView 使用一个背景图片。
解决方案: 让 导航栏 变成透明。

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated) // 1、设置导航栏半透明
self.navigationController?.navigationBar.isTranslucent = true
// 2、设置导航栏背景图片
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) // 3、设置导航栏阴影图片:导航栏 下面那条线
self.navigationController?.navigationBar.shadowImage = UIImage()
}

  

实现效果

办法二:自定义导航栏

安全区效果

导航栏实现

使用

        /// 导航view
let navView = createDiyNavgationalView(titleStr: "营业时间选择", addView: self.view)

  

    /// 仿系统导航栏
func createDiyNavgationalView(titleStr: String?, addView:UIView) -> UIView{
let bgView = JYUIModel.createView()
bgView.backgroundColor = UIColor.clear let backIV = JYUIModel.createBtn()
backIV.setImage(UIImage(named: "back_normal_white"), for: .normal)
backIV.addTarget(self, action: #selector(back), for: .touchUpInside)
backIV.adjustsImageWhenHighlighted = false
backIV.layer.removeAllAnimations()
addView.addSubview(backIV) let titleLabel = JYUIModel.creatLabe(text: titleStr, font: UIFont.systemFont(ofSize: 18), textColor: UIColor.init(hexString: "#FFFFFF")) bgView.addSubview(backIV)
bgView.addSubview(titleLabel)
let vd:[String:UIView] = ["backIV":backIV, "titleLabel":titleLabel ]
bgView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "|[backIV(44)]-(>=44)-[titleLabel]-(>=44)-|", options: [.alignAllCenterY], metrics: nil, views: vd))
bgView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:[backIV(44)]|", options: [.alignAllCenterY], metrics: nil, views: vd))
titleLabel.centerXAnchor.constraint(equalTo: bgView.centerXAnchor).isActive = true
titleLabel.centerXAnchor.constraint(equalTo: bgView.centerXAnchor).isActive = true
if #available(iOS 11.0, *) , isPhoneX {
bgView.heightAnchor.constraint(equalToConstant: 44 + JYWindow.safeAreaInsets.top).isActive = true
} else {
bgView.heightAnchor.constraint(equalToConstant: 64).isActive = true
}
return bgView
} @objc private func back(){
self.navigationController?.popViewController(animated: true)
}

  

2.上边营业时间的view

extension ShopBussionTimeController{
private func configUI111() {
/// 营业时间
let businessHoursView = createTopView() /// 导航view
let navView = createDiyNavgationalView(titleStr: "营业时间选择", addView: self.view) self.view.addSubview(selectDayView)
let vd: [String: UIView] = ["businessHoursView":businessHoursView,
"navView":navView]
self.view.jy.addSubViews(vd)
self.view.sendSubviewToBack(businessHoursView)
self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "|[businessHoursView]|", options: [], metrics: nil, views: vd))
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "|[navView]|", options: [], metrics: nil, views: vd))
self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:[businessHoursView]", options: [], metrics: nil, views: vd))
self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[navView]", options: [], metrics: nil, views: vd)) let offset = Screen_Offset > 1 ? Screen_Offset : 1
var headViewheight = 188 * offset //188 是设计图的高度
if #available(iOS 11.0, *) {
businessHoursView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
if isPhoneX {
headViewheight = headViewheight + JYWindow.safeAreaInsets.top - 20
}
} else {
businessHoursView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
}
businessHoursView.heightAnchor.constraint(equalToConstant: headViewheight).isActive = true
}
}

  

swift 需求: 导航栏和HeaderView 使用一个背景图片。的更多相关文章

  1. Swift - 修改导航栏“返回”按钮文字,图标

    Swift - 修改导航栏“返回”按钮文字,图标 2015-11-27 09:13发布:hangge浏览:4037   项目中常常会使用 UINavigationController 对各个页面进行导 ...

  2. Swift - 修改导航栏“返回”按钮文字和图标 /手势冲突解决/响应范围

    iOS11之前 修改导航栏“返回”按钮文字,图标 https://blog.csdn.net/u012701023/article/details/50264265 iOS11 完美解决导航栏按钮偏移 ...

  3. swift设置导航栏item颜色和状态栏颜色

    //swift设置导航栏item颜色和状态栏颜色 let dict:Dictionary =[NSForegroundColorAttributeName:UIColor.hrgb("333 ...

  4. swift 自定义导航栏颜色

    func setNavigationApperance(){ //自定义导航栏颜色 [self.navigationController?.navigationBar.barTintColor = U ...

  5. Swift - 重写导航栏返回按钮

    // 重写导航栏返回按钮方法 func configBackBtn() -> Void { // 返回按钮 let backButton = UIButton(type: .custom) // ...

  6. Swift - 修改导航栏的样式(文字颜色,背景颜色,背景图片)

    默认情况,导航栏UINavigationController的样式如下,如果想要使用代码修改样式也是比较简单的. 1,修改导航栏背景色 1 2 3 //修改导航栏背景色 self.navigation ...

  7. 用css来写一个背景图片的切换

    代码如下: <!DOCTYPE HTML> <htmllang="en-US"> <head> <meta charset="U ...

  8. [iOS微博项目 - 1.2] - 导航栏搜索框

    A.导航栏搜索框 1.需求 在“发现”页面,在顶部导航栏NavigationBar上添加一个搜索框 左端带有“放大镜”图标 github: https://github.com/hellovoidwo ...

  9. OC导航栏自定义返回按钮

    [iOS]让我们一次性解决导航栏的所有问题 在默认情况下,导航栏返回按钮长这个样子   导航栏默认返回按钮 导航栏左上角的返回按钮,其文本默认为上一个ViewController的标题,如果上一个Vi ...

随机推荐

  1. requestmapping等相关知识

    @responseBody注解的使用   1. @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区 ...

  2. 笔记本使用control线连接交换机

    要求: 1.一台笔记本 2.一条usb转rj45串口线 (一端是usb口一端是网口) 连接步骤: usb口插入笔记本,网口插入交换机控制口(交换机上面一般会有标注) 直连步骤: 首先查看是哪个com口 ...

  3. Tomcat虚拟根目录与虚拟目录

    tomcat版本:apache-tomcat-7.0.42 参考:http://blog.csdn.net/pangdingshan/article/details/7214786 一.虚拟根目录 1 ...

  4. [转]linux下编译boost.python

    转自:http://blog.csdn.net/gong_xucheng/article/details/25045407 linux下编译boost.python 最近项目使用c++操作python ...

  5. 微信支付,退款时,出现了内部错误-网站中X509Certificate2加载证书时出错

    今天给阿里云,虚拟主机 网站配置了加密证书文件,用类X509Certificate2加载证书文件时,一直报出现了内部错误,但是Demo中用控制台程序加载证书没任何问题 读取证书文件的语句: X509C ...

  6. Spark Streaming 'numRecords must not be negative'问题解决

    转载自:http://blog.csdn.net/xueba207/article/details/51135423 问题描述 笔者使用spark streaming读取Kakfa中的数据,做进一步处 ...

  7. CIFAR10数据可视化

    一.数据准备 下载cifar-10-binary.tar.gz并解压,其中有多个bin文件,现对data_batch_1.bin进行可视化. 二.数据说明 该二进制文件存储的有10000张32X32的 ...

  8. Delphi调用大漠插件示例

    Delphi XE2 版本调用大漠插件方法:打开Component->Import Component->默认Import a Type Library,点击Next->找到Dm.d ...

  9. <Vector Calculus>(by Paul C, Matthews) Notes

    现在流行用Exterior Caculus, 所以个人觉得Matthews这本书有点过时了. 想学Vector Calculus的话,推荐<Vector Calculus, Linear Alg ...

  10. 【动态规划】最大连续子序列和,最大子矩阵和,最大m子段和

    1.最大字段和问题 求一个序列最大连续子序列之和. 例如序列[-1,-2,-3,4,5,-6]的最大子段和为4 + 5 = 9. ①枚举法 int MaxSum(int n,int *a){ int ...