使用Mac自动操作制作@1x@2x@3x图片(切图)
在iOS开发中,使用的图片要求导入@1x、@2x和@3x:
使用@1x格式:iPhone3GS(基本上是淘汰了)
使用@2x格式:iPhone 4,4S,5,5S,5C,SE,6,6S,7,8,XR
使用@3x格式:iPhone 6Plus、6sPlus、7Plus、8Plus、X、XS、XS Max
这样在开发过程中,将三种图片(比如分别为【xxx.png】、【xxx@2x.png】 和 【xxx@3x.png】)导入到工程图库中的时候可以自动被识别为1x、2x和3x大小的图片
可以利用Mac系统中自带的服务自己制作一个快速生成@1x、@2x和@3x图片的功能
首先spotlight搜索Automator,然后按Enter打开
新建文稿
选取文稿类型为快速操作
在工作流程收到当前的后面选择图像文件
在左边窗口的“操作”下,选择“资源库”中的“文件和文件夹”,将右侧中的“给访达项目重新命名”拖入最右侧的窗口中,(如果警告提示是否要增加一个“拷贝访达项目”操作,选择“不添加”),选择“添加文本”,在输入框中输入【@3x】
拖入“复制访达项目”
选择左侧“资源库” ...
TabBar 的 Item 按钮的像素大小
TabBar的Item按钮的像素大小要求根据苹果官方人机界面指南(Human Interface Guidelines)可以得知:
iOS系统会根据设备和方向显示两种标签栏:常规(Regular)和紧凑(Compact),所以在设置自定义TabBar Item的时候也应该包含常规和紧凑两种不同的尺寸~
根据图形是圆形、方形、宽形、高形,像素也有不同的要求:
如果图标是圆形的,应该提供:25pt@2x、25pt@3x、18pt@2x、18pt@3x
如果图标是方形的,应该提供:23pt@2x、23pt@3x、17pt@2x、17pt@3x
如果图标是宽形的,应该提供:31pt@2x、31pt@3x、23pt@2x、23pt@3x
如果图标是高形的,应该提供:28pt@2x、28pt@3x、20pt@2x、20pt@3x
完整表格~
复杂度分析
一、概念算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。应用于数学和计算机导论。
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。
学习数据结构和算法,就一定离不开时间、空间复杂度分析。复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半。
二、为什么需要复杂度分析
预测算法所需要的资源
计算时间(CPU消耗)
内存空间(RAM消耗)
通信时间(带宽消耗)
预测算法的运行时间
在给定输入规模时,所执行的基本操作数量
或者称之为算法复杂度(Algorithm Complexity)
测试结果非常依赖测试环境
测试环境中硬件的不同对测试结果有很大的影响
测试结果受到数据规模的影响很大
对于小规模的数据排序,插入排序可能反倒会比快速排序要快
所以,我们需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。这就是时间、空间复杂度分析方法。
三、大 O 复杂度表示法大O表 ...
算法和数据结构
数据结构这门课程是大小计算机系的必修课,很多人第一次接触这门课时,都会觉的数据结构和算法很抽象,晦涩难懂,宛如天书。虽然在大学的时候老师讲的都听明白了,但是毕业后不是专门从事算法相关的工作。所以到现在已经忘记很多了。如果你想让自己的编程能力有质的飞跃,不再停留于调用现成的东西而是追求更完美的实现, 对编程还有追求?不想被行业淘汰?那就不要只会写凑合能用的代码!那么数据结构和算法是你的必修课!
一、什么是数据结构官方定义:数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。
大部分数据结构和算法的教材,都会给这两个概念明确一下定义, 但是这些定义都很抽象,对理解这两个概念并没有实质性的帮助,反倒会让你陷入死抠定义的误区。虽然我们说没必要深挖严格的定义,但是这并不等于不需要理解概念。
广义上讲数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。
狭义上讲是指某些著名的数据结构和算法,比如队列、栈、二分查找、动态规划等。
二、数据结构和算法的关系大部分的书和教程都会把数据结构和算法这两个东西放到一起讲,这是因为数据结构和算法是相辅相成 ...
LLVM-Clang插件开发
前言前面一篇博客介绍了LLVM相关内容,那现在就开始用学到的LLVM知识,做一下实践;
–Clang插件开发
一、插件目录
在【clang/tools】源码目录下新建一个插件目录,叫做【ly-plugin】(自定义)
在【 clang/tools/CMakeLists.txt】最后加入内容: add_clang_subdirectory(ly -plugin),小括号里是插件目录名
二、插件必要的文件
在【ly-plugin】目录下新建一个【CMakeLists.txt】,文件内容是:add_llvm_loadable_module(LYPlugin LYPlugin.cpp)
三、编写插件源码
【LYPlugin.cpp】参考
四、编译插件
利用cmake生成的Xcode项目来编译插件(第一次编写完插件,需要利用cmake重新生成一下Xcode项目)
插件源代码在【Sources/Loadable modules】目录下可以找到,这样就可以直接在Xcode里编写插件代码
选择LYPlugin这个target进行编译,编译完会生成一个动态库文件
...
LLVM
一、什么是LLVM?
官网:https://llvm.org/
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.(LLVM项目是模块化、可重用的编译器以及工具链技术的集合。)
美国计算机协会 (ACM) 将其2012年软件系统奖项颁给了LLVM,之前曾经获得此奖项的软件和技术包括:Java、Apache、 Mosaic、the World Wide Web、Smalltalk、UNIX、Eclipse等等
创始人Chris Lattner,亦是Swift之父;
有些文章把LLVM当做Low Level Virtual Machine(低级虚拟机)的缩写简称,官方描述如下:The name "LLVM" itself is not an acronym; it is the full name of the project.(LLVM这个名称本身不是首字母缩略词; 它是项目的全名)
二、传统的编译器架构和LLVM架构
不同的前 ...
CocoaPods私有库使用Tips
1.pod lib lint 和 pod spec lint 命令的区别
pod lib lint是只从本地验证你的pod能否通过验证;
pod spec lint是从本地和远程验证你的pod能否通过验证;
2.私有pod的验证使用pod spec lint去验证私有库能否通过验证时应该要添加--sources选项,不然会出现找不到repo的错误:
1pod spec lint --sources='私有仓库repo地址,https://github.com/CocoaPods/Specs'
3.subspec为了让自己的Pod被导入时显示出良好的文件层划分,subspec是必须的。若subspec要依赖其它的subspec,则subspec的dependency后面接的不是目录路径,而是specA/specB这种spec关系;
4.私有库引用私有库的问题在私有库引用了私有库的情况下,在验证和推送私有库的情况下都要加上所有的资源地址,不然Pod会默认从官方repo查询。
12pod spec lint --sources='私有仓库repo地址,ht ...
CocoaPods私有库Steps
1.创建私有仓库先coding.net、OSChina、GitHub或者自己搭建的Git服务器上创建一个私有仓库,然后在本地添加仓库
1pod repo add LYSpecs https://git.coding.net/CodingZero/LYSpecs.git
2.创建私有库创建私有库模板
1pod lib create VenderName
第一个问题是问你选择Swift还是Objc构建项目。eg: ObjC
12hat language do you want to use?? [ Swift / ObjC ] > ObjC
第二个问题问你是否需要创建一个Demo项目eg: Yes
12Would you like to include a demo application with your library? [ Yes / No ] > Yes
第三个问题让你是否选择一个测试框架eg: None
12Which testing frameworks will you use? [ Specta / Kiwi / None ]> ...
SpringBoot 快速入门
一、简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
二、Spring Boot 的主要优点:
快速构建独立的Spring应用程序
开箱即用,提供各种默认配置来简化项目配置
内嵌式容器简化Web项目,嵌入Tomcat、Gradle,无需部署WAR包
提供生产就绪功能,如指标,健康检查和外部配置
简化Maven及Gradle配置
没有冗余代码生成和XML配置的要求
对主流开发框架和工具链做无配置集成
三、系统环境
Java 1.8.0_112
Spring Boot 1.5.4
IntelliJ IDEA 2017.1.3
四、快速构建项目1. 使用SPRING INITIALIZR工具生成基础项目1.1 打开浏览器:http://start.spring.io/
1.2 选择构 ...
iOS项目工程中启动Unity项目工程
一、Unity 3D导出iOS项目
将Unity3D 导出 iOS的项目
详细步骤…
导出目录
注)U3D的所有相关设置,都在U3D这边设置,设置好后导出iOS项目
二、将导出的一些文件导入到已有的iOS工程项目中
将Classes 和 Libraries 文件夹 选择 Create groups 方式导入已有的iOS工程中
将Data 文件夹 选择 Create folder references 方式导入的已有的iOS工程中
导入之后的目录结构
三、删除Native下所有的.h文件的引用注意:Native 下面不仅有.h文件,还有.cpp文件,这里只需要删除所有的.h文件
四、删除libil2cpp引用


## 五、添加引用类库
* 添加引用库(有部分是iOS),有三个是`optional` ~
![添加引用库](/images/201608 ...