swift 需求: 导航栏和HeaderView 使用一个背景图片。
办法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 使用一个背景图片。的更多相关文章
- Swift - 修改导航栏“返回”按钮文字,图标
Swift - 修改导航栏“返回”按钮文字,图标 2015-11-27 09:13发布:hangge浏览:4037 项目中常常会使用 UINavigationController 对各个页面进行导 ...
- Swift - 修改导航栏“返回”按钮文字和图标 /手势冲突解决/响应范围
iOS11之前 修改导航栏“返回”按钮文字,图标 https://blog.csdn.net/u012701023/article/details/50264265 iOS11 完美解决导航栏按钮偏移 ...
- swift设置导航栏item颜色和状态栏颜色
//swift设置导航栏item颜色和状态栏颜色 let dict:Dictionary =[NSForegroundColorAttributeName:UIColor.hrgb("333 ...
- swift 自定义导航栏颜色
func setNavigationApperance(){ //自定义导航栏颜色 [self.navigationController?.navigationBar.barTintColor = U ...
- Swift - 重写导航栏返回按钮
// 重写导航栏返回按钮方法 func configBackBtn() -> Void { // 返回按钮 let backButton = UIButton(type: .custom) // ...
- Swift - 修改导航栏的样式(文字颜色,背景颜色,背景图片)
默认情况,导航栏UINavigationController的样式如下,如果想要使用代码修改样式也是比较简单的. 1,修改导航栏背景色 1 2 3 //修改导航栏背景色 self.navigation ...
- 用css来写一个背景图片的切换
代码如下: <!DOCTYPE HTML> <htmllang="en-US"> <head> <meta charset="U ...
- [iOS微博项目 - 1.2] - 导航栏搜索框
A.导航栏搜索框 1.需求 在“发现”页面,在顶部导航栏NavigationBar上添加一个搜索框 左端带有“放大镜”图标 github: https://github.com/hellovoidwo ...
- OC导航栏自定义返回按钮
[iOS]让我们一次性解决导航栏的所有问题 在默认情况下,导航栏返回按钮长这个样子 导航栏默认返回按钮 导航栏左上角的返回按钮,其文本默认为上一个ViewController的标题,如果上一个Vi ...
随机推荐
- django基础 -- 10.form , ModelForm ,modelformset
一.生成页面可用的 HTML标签 1.form 所有内置字段 Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label ...
- uniq的坑坑
很久没有做过文本统计之类的操作了,今天有点任务弄一下,幸亏机智的我列出了全部看了一遍,发现uniq的时候还是有重复的,然后总结了一下 假如我有1.txt这个文本: 10.0.0.1 10.0.0.1 ...
- 对象属性的描述:writable、enumerable、configurable
writable属性 writable属性是一个布尔值,决定了目标属性的值(value)是否可以被改变.如果原型对象的某个属性的writable为false,那么子对象将无法自定义这个属性. enum ...
- 【python】self & cls
转自 python中self,cls 普通的方法,第一个参数需要是self,它表示一个具体的实例本身. 如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用 ...
- windows server 2008 r2 x64 enterprise service pack1中aspjpeg.dll安装
官网地址:http://persits.com/ 64位:http://www.persits.com/aspjpeg64.exe sn:lptn9dQO1enAePAXB2wFaCZawYWzfm0 ...
- json 数据在textarea中显示的时候,切换 beauty和ugly模式
转化为beauty模式 var jsonText = $('#json').val(); $('#json').val(JSON.stringify(JSON.parse(jsonText), nul ...
- CVE-2017-16995 漏洞利用
Ubuntu本地提权(CVE-2017-16995)漏洞复现 在 ichunqiu 看到的环境(https://www.ichunqiu.com/course/61487),觉得有意思就记录一下. 实 ...
- Openface 入门
Openface 简单入门 背景 Openface是一个开源的人脸识别框架,同类软件产品还有 seetaface ,DeepID等,当然,如果算上商业的产品,那就更多了. Openface人脸比对结果 ...
- session and cookie简析
无状态应用程序(cookies.session等机制出现的背景) Web应用程序服务器通常是“无状态的”: 每个HTTP请求都是独立的; 服务器无法判断2个请求是来自同一个浏览器还是用户. Web服务 ...
- Android APK反编译(一)
apk是安卓工程打包的最终形式,将apk安装到手机或者模拟器上就可以使用APP.反编译apk则是将该安卓工程的源码.资源文件等内容破解出来进行分析. 一.APK反编译基本原理 1.APK分析 apk文 ...