Swift4.x普通笔记01实现底部导航与Pod配置And.MVC结构

Swift UI专项训练34 TabBar底部导航栏 TabBar大家应该不会陌生,也是我们经常接触的控件,与navigation类似。首先来看下它的属性: Background用来摄住TabBar的背景图片。 Shadow设置阴影。 Selection用来设置TabBar选中后会出现的图片。 Style:用于设置TabBar的样式,默认的是白底,也可以设置成黑底。 Bar Tint:用于设置背景颜色 Item posit 阅读详情

不水,全是操作步骤。喜欢的双击666

 

从创建开始
 1. Create a new Xcode project
 2. Single View App
 3. Language swift
 
在创建AppDelegate同级目录下自定义的UITabBarController,这里命名MyUITabBarController
 1. 在AppDelegate的application方法里面设置代码在下面

window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = MyTabBarController()
window?.makeKeyAndVisible()


这里需要在Deployment Info 里面把Main InterFace里面的Main删除

在创建AppDelegate同级目录下自定义UINavigationController,这里命名为MyUINavigationController
1.    接下来我们在MyUITabBarController自定义一个方法setChildViewController它的作用是用来设置底部导航
title:String        设置底部导航文字
imageName:String        设置默认图片
selectedImageName:String        设置选中图片

func setChildViewController(_ childController: UIViewController,title:String,imageName:String,selectedImageName:String){ 
        childController.tabBarItem.image = UIImage(named: imageName)
        childController.tabBarItem.selectedImage = UIImage(named: selectedImageName)
        childController.tabBarItem.title = title
        childController.title = title
        let navVc = MyNavigationController(rootViewController:childController)
        addChild(navVc)
}

在创建AppDelegate同级目录下自定义四个UIViewController,名称分别为HomeViewController,VideoViewController,HuoshanViewController,MineViewController

然后我们在MyTabBarController文件viewDidLoad方法里面设置添加一个自定义方法addChildViewControllers代码如下

func addChildViewControllers () {
        setChildViewController(HomeViewController(), title: "首页", imageName: "home_tabbar_32x32_", selectedImageName: "home_tabbar_press_32x32_")
        setChildViewController(VideoViewController(), title: "视频", imageName: "video_tabbar_32x32_", selectedImageName: "video_tabbar_press_32x32_")
        setChildViewController(HuoshanViewController(), title: "小视频", imageName: "huoshan_tabbar_32x32_", selectedImageName: "huoshan_tabbar_press_32x32_")
        setChildViewController(MineViewController(), title: "我的", imageName: "mine_tabbar_32x32_", selectedImageName: "mine_tabbar_press_32x32_")
        
}

然后我们运行项目可以看到底部会出现导航,如果你的导航图标还是蓝色,这里需要配置Assets.xcassets,拖住选中图片在右边选择使用Render As为Original Image

 

 

接下来我们要实现底部四个导航,中间一个加号的导航

所以我们在这里需要自定义一个UITabBar,名称为MyTabBar,以下为全部代码

class MyTabBar: UITabBar {

    override init(frame: CGRect) {
        super.init(frame:frame)
        addSubview(publishButton)    //添加SubView
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    private lazy var publishButton :UIButton = {
        let publishButton = UIButton(type: .custom)    //新建一个UIButton
        publishButton.setBackgroundImage(UIImage(named: "feed_publish_44x44_"), for: .normal)    //设置一个背景图片
        publishButton.setBackgroundImage(UIImage(named: "feed_publish_press_44x44_"), for: .selected)    //设置一个选中背景图片
        publishButton.sizeToFit()   // 按钮宽高和图片
        return publishButton    
        
    }()
    
    
    override func layoutSubviews() {
        super.layoutSubviews()
        let width = frame.width
        let height = frame.height
        
        publishButton.center = CGPoint(x: width*0.5, y: height * 0.5 - 12)
        
        let buttonW:CGFloat = width * 0.2
        let buttonH:CGFloat = height
        
        let buttonY:CGFloat = 0
        
        var index = 0
        
        for button in subviews {
            if !button.isKind(of: NSClassFromString("UITabBarButton")!){continue}
            let buttonX = buttonW * (index>1 ? CGFloat(index+1):CGFloat(index))
            
            button.frame = CGRect(x: buttonX, y: buttonY, width: buttonW, height: buttonH)    //摆放每个Button位置
            index+=1
            
        }

        
    }
    

}

然后我们需要在MyTabBarController的addChildViewControllers方法的最后一行添加

setValue(MyTabBar(), forKey: "tabBar")

再次运行,就会得到我们想要的结果,写这篇博客,资源文件导入的过程有点省略。在这里主要配置Assets.xcassets

 

接下来我们来配置在项目的根目录下 有.xcodeproj后缀文件下

其实就是两个命令

第一步 Pod init 

第二步 Pod install

在目录下面你们可以看到.xcworkspace后缀文件和Pods文件夹,这里你们可以打开.xcworkspace后缀文件

基本上结束了

 

用MVC改造项目,我们在Assets.xcassets同级目录下建一个Classes文件夹,在Classes目录下可以建立对应你的HomeViewController的文件夹Home,在下面建立三个文件夹Controller,View,Model,然后把HomeViewController放入Controller文件夹里面

 

我们用代码生成布局,这时候我们的Main.storyboard就可以删掉了。

Swift_UI:(四)、导航控制器、TabbarController、页面调转 AppDelegate.swift文件中:func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {        // Override point for custom... 阅读详情

相关推荐

SwiftUI(二十二)- SwiftUI 实现多页面应用 TabView和自定义底部导航

TabView 是SwiftUI中用于创建底部导航栏的容器视图,它允许我们在多个视图之间切换,并提供了一种非常简答的方式来管理不同的页面。与UIKit中的UITabBarController类似,TabView可以帮助开发者快速构建多页面应用的基础架构。TabView的语法非常简单,使用.tabItem() 修饰符即可实现页面切换和TabBar的管理,不需要编写复杂的控制器逻辑。TabView会自动处理选中和取消状态,我们只需要关注每个tab中药显示的内容。

weixin_39339407的博客 2528

[Swift]UITabBarController

import UIKit class GARootTabBarController: UITabBarController, UITabBarControllerDelegate { let textSize: CGFloat = 10; override func viewDidLoad() { super.viewDidLoad() ...

Gamin 2165

swift-BKTabBarController该框架是一个TabBarController底部菜单中心控制器

该框架是一个TabBarController底部菜单中心控制器.该框架在原UI TabBarController基本上添加了中心控制按钮,除了切换控制器外,中心控制按钮还能提供其他操作

ios-swift-将 TabBarItem 选中和未选中的样式设置成相同的

点击Assets.xcassets中的图片资源,在右边的Attributes inspector面板中的“Render As”选择Original Image

wa172126691的博客 668

swift版仿映客中间凸出tabBar,上下滑动时隐藏或显示导航栏及标签栏

网上基本上都是OC版的,我这里写了个swift版的。

swift分享弹出视图

底部分享弹出视图,swift版

3.Swift导航栏的使用

【代码】3.Swift导航栏的使用。

长沙火山 880

Ollama本地大模型部署指南:从核心原理到实战避坑

大语言模型(LLM)作为人工智能领域的核心技术,通过海量数据训练获得强大的语言理解和生成能力。其工作原理基于Transformer架构,通过自注意力机制处理序列数据,在文本生成、代码编写和对话系统等场景展现出巨大价值。随着开源模型的普及,本地部署成为关注焦点,它解决了数据隐私和定制化需求,但面临环境配置和资源管理的挑战。Ollama作为开源工具,通过封装模型格式和统一API,简化了本地部署流程,支持GPU加速和性能调优,让开发者能够快速集成到IDE和自动化脚本中,实现高效的本地AI应用部署。

weixin_30915951的博客 452

SwiftUI 设置底部TabBar(tabItem)

SwiftUI设置底部TabBar,设置二级页面隐藏处理

优快云博客 4460

从注册到投稿:一步步教你完成KBS期刊的在线投稿流程(最新版)

本文详细介绍了如何完成KBS期刊的在线投稿流程,从账号注册到最终提交的全过程。特别针对初次使用Elsevier投稿系统的研究者,提供最新版系统的操作指南,包括投稿要求、文件格式、作者信息管理等关键步骤,帮助研究者顺利投稿至这一人工智能领域的知名期刊。

egg99的博客 1600

Qt图形几何之QRect详解:从基础操作到高级功能全解析

本文全面介绍了Qt框架中的QRect类,详细解析了其核心功能和使用方法。主要内容包括:1)QRect的基本概念与多种构造函数;2)矩形属性获取和状态判断方法;3)几何操作函数(移动、调整大小等);4)几何关系判断(包含、相交等);5)坐标变换和边距处理;6)实用功能与QRectF转换;7)综合应用示例(图形界面、碰撞检测、布局管理);8)性能优化建议和常见陷阱。通过丰富的代码示例,展示了QRect在Qt图形编程中的实际应用,帮助开发者掌握矩形处理的各项操作技巧,提升图形界面开发效率。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 117

IOS swift使用导航栏实践

ios中不使用app创建时自带的main.storyboard创建导航栏,而采用swift代码控制导航栏实践demo

下半年记忆的博客 1078

基于MATLAB的PDT DMR物理层仿真

PDT DMR物理层仿真的目标是评估系统的误码率(Bit Error Rate,BER),以及验证和优化各种调制方案、编码方案和信道模型。下面将介绍如何进行PDT DMR物理层的仿真,并提供相应的MATLAB源代码。通过上述步骤,我们可以进行基于MATLAB的PDT DMR物理层仿真,并评估系统的性能。根据实际需求,我们可以修改仿真参数和添加更复杂的信道模型,以更全面地评估系统性能。最后,我们可以将仿真结果进行可视化和分析。首先,我们需要设置仿真的参数,包括调制方案、编码方案、信道模型和信噪比等。

TechPulseZ的博客 459

SwiftUI使用TabView制作底部导航栏

SwiftUI使用TabView制作底部导航栏 (博主刚开始学习swift,深受找不到免费好的教程的苦恼,有所掌握就和大家 分享,非老司机,如若出现错误,还请大神不吝指出) 话不多说 ,直接上代码加效果图 import SwiftUI struct StabUIView: View { var body: some View { TabView{ Text("PAGE ONE") .tabItem({

weixin_44045184的博客 2182

2025年5月架构设计师论文真题回顾,附写作技巧、所涉知识点及参考范文(三)

本文主要回顾2025年上半年(2025-5-24)系统架构设计师考试下午论文的题目,同时附带写作技巧、所涉知识点及参考范文。试题三:多模型数据库及应用。

一几文的编程学习笔记。 630

《拉依达的嵌入式\驱动面试宝典》—操作系统篇(二)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 472

SwiftUI底部导航栏组件常见问题解决方案

SwiftUI底部导航栏组件常见问题解决方案 一、项目基础介绍 本项目是一个用于SwiftUI的底部导航栏组件,它提供了一种简单的方式来为你的应用添加底部导航功能。该组件主要使用Swift编程语言开发。 二、新手常见问题及解决方案 问题1:如何将BottomBar组件集成到我的项目中? 解决方案: 在Xcode中,选择“File” -> “Swift Packages” -> “Ad...

gitblog_00388的博客 409

Python 爬虫实战:爬虫代码打包为可执行文件

本文详细介绍了使用PyInstaller工具将Python爬虫打包为可执行文件的全过程。以豆瓣电影Top250爬虫为例,首先对比了主流打包工具,推荐选择跨平台的PyInstaller。通过编写完整的爬虫代码(包含异常处理和数据保存功能),演示了从环境准备、代码测试到打包配置的具体步骤。重点讲解了单文件打包、自定义图标等高级功能,并针对常见的"找不到模块"、文件体积过大等问题提供了解决方案。文章还说明了跨平台打包的注意事项,帮助开发者实现爬虫程序的无环境依赖部署,大幅提升程序的易用性和部署

2503_91057718的博客 2216

Swift UI 学习(3)

继续来学习swiftUI

kkzjyy的博客 2001

〖Python WEB 自动化测试实战篇⑤〗- selenium 元素定位详解 - (八大元素定位方式)

测试对象的定位和操作是我们利用 selenium 编写自动化脚本和 webdriver 的核心内容,其中 "操作" 这一部分又是建立在 "selenium" 元素定位的基础之上的。所以对元素对象的定位就显得越发的重要,接下来我们就学习一下常用的元素定位方法有哪些。......

易编橙 · 终身成长社群,相遇已是上上签! 4万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

swift - 添加导航栏

步骤一:修改AppDelegate文件为如下代码: class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?).

RRJia的博客 2343

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

swift中UI适配,即视图控件在导航栏下面开始显示

在iOS项目研发中,从iOS7.0及以后的系统版本中,UI视图控件是不区分导航栏是否从导航栏下面开始计算y坐标显示的,所以就会造成显示异常。在纯代码编码过程中,可以通过设置这样一个属性edgesForExtendeLayout进行解决。 如下所示: override func loadView() { super.loadView() self.view.bac

番薯大佬的专栏 2071

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

swift导航栏UINavigationController使用

AppDelegate文件使用 ViewController里的使用 push到下一个界面 pop回上一个界面

u012858077的博客 2775

swift导航控制

let vc1 = CQ_HomeViewController() let nav1 = UINavigationController(rootViewController: vc1) nav1.tabBarItem = UITabBarItem(title: “视频”, image: UIImage(named: “视频”), selectedImage: UIImage(named: “视频”...

RjLoveGyh的博客 379

swift 设置导航栏(基础篇)

extension HomeViewController{ private func setupNavigationBar(){ /*** 设置导航栏背景颜色 ***/ navigationController?.navigationBar.barTintColor = UIColor.red /***

诺离〆的博客 6260
上一篇: gradle 任务中的一些东西04
下一篇: Swift4.x普通笔记02使用Alamofire和SwiftyJSON进行网络请求与解析
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值