iOS OC纯代码企业级项目实战之我的云音乐(持续更新))
简介
这是一个使用OC语言,从0使用纯代码方式开发一个iOS平台,接近企业级商业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识;主要是讲解如何使用系统功能,流行的第三方框架,第三方服务,完成接近企业级商业级项目,目的是让大家,学到真正的企业级商业级项目开发技术。
效果图
安装环境和创建项目
就是使用Xcode,文档里面就不写了。
如何移出SceneDelegate
为什么要移出
- 有SceneDelgate不能兼容低于iOS 13以下版本,而企业级项目,例如:目前的微信,QQ,抖音,大部分都是兼容到iOS 10,11,甚至有些兼容到9,所以需要学习如果移出,改为旧版本结构。
- 同时目前公司里面,如果是旧项目,那肯定也就没有SceneDelgate。
- 有些第三方项目,不兼容有SceneDelgate的项目结构。
移出有什么影响
SceneDelgate是在开发iPad分屏应用是才有实际功能,而我们课程讲解的是通用功能开发,所以没影响。
如何移出
只需要删除相关文件,也就是不使用SceneDelegate;方法如下:
- 将AppDelegate中Scene生命周期方法删除,并把window属性从SceneDelegate拷贝过来。
- 将SceneDelegate文件删除。
- 在info.plist文件中,将Application Scene Manifest
然后重新编译项目就行了;跳转界面就是获取到AppDelegate跳转;移除后兼容的最低版本就可以更改为低于13了,在选中项目->选中Project->Deployment Target。
跳转逻辑
MyCloudMusicStoryboardRemoveSceneDelegate
例如:启动界面跳转逻辑:
[AppDelegate.shared toLoginHome];
实现启动界面布局和功能
布局
使用前面讲解的MyLayout框架实现,其实前面已经实现过了。
显示年
年份可以写死,也可以动态获取,然后显示。
NSInteger year = [SuperDateUtil currentYear];
copyrightView.text=[NSString stringWithFormat:@"Copyright %d Ixuea. All Rights Reserved",year];
实现字符串国际化
创建字符串文件
选中项目目录-New File-Strings File,名称必须为Localizable.strings。
提示:不国际化,也可以用这种方式将代码中字符串写到单独的文件,方便管理。
启用国际化
选中项目Project-Info,在Localiztion中,点击加号,添加要国际化的语言,例如默认有英语,这里添加一个中文简体,然后会弹出一个界面,选择要国际化的文件,这里都选择,最后点击完成;然后上面创建Localizable.strings文件,就可以展开,发现有两个文件,一个是中文简体,一个是英文。
添加字符串
现在要做的就是在这两个文件中添加字符串,这里就把项目中所有字符串全部拷贝过来,因为这个每次用到时再添加浪费时间。
获取字符串
NSString *result=NSLocalizedString(@"Copyright", @"");
result=[NSString stringWithFormat:result,year];
copyrightView.text=result;
如何实时生效
因为目前iOS系统更改语言后,会软重启,所以不存在需要在应用内处理实时生效问题。
应用名称国际化
虽然应用名称也是字符串格式化,但不能写到Localizable.strings,需要写到InfoPlist.strings文件中。
实现
创建InfoPlist.strings文件,并启用国际化,和前面国际化字符串差不多,只是文件名称不一样,name是固定的:
英文文件:
CFBundleName="CloudMusic";
中文简体文件:
CFBundleName="我的云音乐";
运行项目后,在回到桌面,可以看到名称确实实现了国际化。
下次更新全局颜色管理。
iOS OC纯代码企业级项目实战之我的云音乐(持续更新))的更多相关文章
- 从0使用Ruby on Rails打造企业级RESTful API项目实战之我的云音乐
本节对我们项目实现的功能和知识点做一个简单的介绍,因为是RESTful API项目,所以对于后端来说基本上没有什么UI界面可展示,那我们就在关键的点,使用客户端(Android)实现的效果图. 课程简 ...
- 【第二版】高仿Android网易云音乐企业级项目实战课程介绍
这是一门付费Android项目课程,我们只做付费课程:同时也感谢大家的支持. 这一节,对本课程做一个简单介绍,以及放一些项目效果图,如果想直接查看项目视频演示,可以直接在腾讯课堂查看[高仿Androi ...
- iOS开发 纯代码创建UICollectionView
转:http://jingyan.baidu.com/article/eb9f7b6d8a81a5869364e8a6.html iOS开发 纯代码创建UICollectionView 习惯了使用xi ...
- OC纯代码全手工打造ScroolView实现翻页
OC纯代码全手工打造ScroolView实现翻页 1. 概述 分为三部分: 上部标题ScrollView 下部内容ScrollView 上部当前页 标示线 2. 效果 上下两部分都随着手势的滑动一块滑 ...
- iOS面试高薪,进阶 你会这些呢嘛?(持续更新中)
这个栏目将持续更新--请iOS的小伙伴关注!做这个的初心是希望能巩固自己的基础知识,当然也希望能帮助更多的开发者! 基础>分析>总结 面试 iOS常见基础面试题(附参考答案) iOS底层原 ...
- 【Android测试】【第十三节】Uiautomator——如何组织好你的测试代码(项目实战)
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4996000.html 前言 前面我们已经了解Uiautom ...
- iOS OC开发代码规范
1.变量.类名.函数名 使用驼峰命名法 2.尽量使用完整的单词命名,尽量不采用 缩写单词 3.类名使用大写字母打头,前缀统一加上HH 例如:HHHomePageController 4.类的成员变量使 ...
- iOS - OC Block 代码块
前言 Block 是一段预先准备好的代码,可以在需要的时候执行,可以当作参数传递.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.Block 是 C 语言的,类似于一个 ...
- 【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
转自: https://blog.csdn.net/eson_15/article/details/51487323 昨天把项目部署了一下,玩了玩,今天完善了一下购物车中修改商品数量就能局部 ...
随机推荐
- css 进阶实战项目
1. html 结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- C# 11 对 ref 和 struct 的改进
前言 C# 11 中即将到来一个可以让重视性能的开发者狂喜的重量级特性,这个特性主要是围绕着一个重要底层性能设施 ref 和 struct 的一系列改进. 但是这部分的改进涉及的内容较多,不一定能在 ...
- js数组操作集合
1. join() 功能:将数组中所有元素都转化为字符串并连接在一起. 2. reverse() 功能:将数组中的元素颠倒顺序. 3. concat() 功能:数组拼接的功能 ,返回新数组,原数组不受 ...
- 通过 SingleFlight 模式学习 Go 并发编程
最近接触到微服务框架go-zero,翻看了整个框架代码,发现结构清晰.代码简洁,所以决定阅读源码学习下,本次阅读的源码位于core/syncx/singleflight.go. 在go-zero中Si ...
- [题解] [AGC022E] Median Replace
题目大意 有个奇数长度的 \(01\) 串 \(s\) 其中有若干位置是 \(?\). 每次可将 \(3\) 个连续的字符替换成这三个数的中位数. 求有多少方案将 \(?\) 替换成 \(0/1\) ...
- LeetCode数组刷题——448、48、240、769
1.[LeetCode448]:448. 找到所有数组中消失的数字 题目分析: 1-n之间有重复的,有没出现的,有出现一次.使用hashmap,空间复杂度为O(n) 方法一:哈希表,但是空间复杂度超过 ...
- Linux操作系统,为什么需要内核空间和用户空间?
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 本文以 32 位系统为例介绍内核空间(kernel sp ...
- SICP 2.2: 层次性数据和闭包性质(Python实现)
绪论 序对可以为我们提供用于构造复合数据的基本"粘接剂",鉴于Python中tuple中元素不可变的性质,我们通过list来实现序对,如[1, 2].Python的PyListOb ...
- Json序列化与反序列化导致多线程运行速度和单线程运行速度一致问题
紧跟上篇文章 十个进程开启十个bash后一致写入命令执行完毕之后产生了很多很多的文件,博主需要对这些文件同意处理,也就是说对几十万个文件进行处理,想了又想,单线程处理那么多数据肯定不行,于是乎想到了使 ...
- Spring Ioc源码分析系列--Ioc容器BeanFactoryPostProcessor后置处理器分析
Spring Ioc源码分析系列--Ioc容器BeanFactoryPostProcessor后置处理器分析 前言 上一篇文章Spring Ioc源码分析系列--Ioc源码入口分析已经介绍到Ioc容器 ...