现在起 开始尝试用 swift
写点小项目
废话少说 直接上效果图!
这次的目的 是基于MMDrawerController 来实现类似QQ 那样的侧边抽屉展开和关闭效果
2017-05-05
- pod 引入框架
pod 'MMDrawerController','~>0.6.0'
贴上自己的Podfile 文件
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'apojfoisdjf' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
pod 'MMDrawerController','~>0.6.0'
# Pods for apojfoisdjf
target 'apojfoisdjfTests' do
inherit! :search_paths
# Pods for testing
end
target 'apojfoisdjfUITests' do
inherit! :search_paths
# Pods for testing
end
end
2.创建桥接文件.
new file -> Head File -> name(Yoper-Bridging-Header.h)(这是官方推荐的命名方式 项目名-Brigding-Header)
在这个桥接文件中 引入pod 中的三方库 就可以在swift 项目中使用 这写库了
buid setting 搜索 bridging 给 bridging Header 设置路径
Swift 中使用 OC 三方库
只要你的 Podfile 中 有这句话
want to use dynamic frameworks use_frameworks!
, 就不需要 桥接文件如何创建桥接文件
直接在需要用到三方库 的文件中 import 库文件 就直接用了.
我创建了桥接文件 兴高采烈的以为再也不用引入头文件就可以随意使用三方文件, 结果 编译器告诉我 第三方文件不存在, 不存在,,,, 把桥接文件删干净 一切都变得美好起来了
文章:
swift 中简单的UI 操作
1.按钮事件点击
2.导航控制器创建
3.遵循了 某个协议 如果不实现它的requier 方法 会报错
swift 协议
demo 中用到了 代理协议 设计方法
左右抽屉两边的 控制器 跳转下一个页面 需要在中间控制器中跳转
协议语法如下:
-
protocol protocolName :NSObjectProtocol
或者
protocol protocolName :class
接下来在类中 声明代理属性
weak var delegate:protocolName?
注意: 这里的 weak 只能 用来申明 类 对象
原因: swift 中 结构体也可以遵循协议, 类也是一种特殊的结构体 weak 智能修饰类对象, 所以这里要把 协议定义为 类协议
5 Swift - 访问控制(fileprivate,private,internal,public,open)
1,private
private访问级别所修饰的属性或者方法只能在当前类里访问。
2,fileprivate
fileprivate访问级别所修饰的属性或者方法在当前的Swift源文件里可以访问。(比如上门样例把private改成fileprivate就不会报错了)
3,internal(默认访问级别,internal修饰符可写可不写)
internal访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问。
如果是框架或者库代码,则在整个框架内部都可以访问,框架由外部代码所引用时,则不可以访问。
如果是App代码,也是在整个App代码,也是在整个App内部可以访问。
4,public
可以被任何人访问。但其他module中不可以被override和继承,而在module内可以被override和继承。
5,open
可以被任何人使用,包括override和继承。
其他使用 swift 的总结
- 如何声明类属性
- 基本的方法调用 方法名+小括号
- 导航控制器 初始化
- 项目初始化时 不需要再创建一个新的UIWindow 了 直接用AppDelegate 中的 window 属性就好
- swift 事件 和 OC 不同 #selector(事件方法)
- swift 按钮事件传值:
button.addTarget(self, action: #selector(buttonClick(_: )), for: .touchUpInside)
func buttonClick(_ button:UIButton){
}
2017-05-08
- swift 中使用宏定义 - Swift:宏定义
swift 中没有提供宏系统 , 支持条件编译
> 可以使用下的三种方式来代替
1.新建一个类 声明一些常量
2.复杂的宏定义 可是直接申明一个方法来代替
3.使用 pch 文件
如果图片格式 不是 png 创建图片时 记得要加上图片格式 如下:
self.view.backgroundColor = UIColor(patternImage: UIImage.init(named: "leftBackGroundImage.jpg")!)
竟然忘记了放demo下载地址