QQ 抽屉效果, 侧边展开效果 Swift 实现

现在起 开始尝试用 swift 写点小项目

废话少说 直接上效果图!

抽屉.gif

这次的目的 是基于MMDrawerController 来实现类似QQ 那样的侧边抽屉展开和关闭效果

2017-05-05

  1. 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 的总结

  1. 如何声明类属性
  2. 基本的方法调用 方法名+小括号
  3. 导航控制器 初始化
  4. 项目初始化时 不需要再创建一个新的UIWindow 了 直接用AppDelegate 中的 window 属性就好
  5. swift 事件 和 OC 不同 #selector(事件方法)
  6. 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下载地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容