Latest 0.2.3
Homepage https://github.com/xt-input/XTInputKit
License MIT
Platforms ios 10.0, requires ARC
Authors

CI Status
Version
License
Platform

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

Installation

XTInputKit is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'XTInputKit'

暂时移除网络请求部分,等HandyJSON适配swift5。swift 4请用0.1.1

Author

xt-input, [email protected]

XTInputKit是一套swift版的代码集,暂时有:

XTILoger

来自:Loggerithm 感谢honghaoz

打印日志工具,在debug模式下会在终端窗口打印,release模式下返回构造的好的日志,可以将其保存在指定的文件上传到自己的服务器做数据分析

2018/3/21:添加保存日志到文件功能

示例:

var log = XTILoger.default    //如果需要修改默认的日志等级不要直接使用XTLoger.default
log.debugLogLevel = .debug    //debug模式的日志等级
log.releaseLogLevel = .warning    //release模式的日志等级,在release模式下只会构造日志不会打印在控制台,可以自己保存到本地
log.info(format: "%@%@", args: self, self)
log.debug(format: "%@%@", args: self, self)
log.warning(format: "%@%@", args: self, self)
log.error(format: "%@%@", args: self, self)

XTILoger.default.info(1231)
XTILoger.default.debug(1231)
XTILoger.default.warning(1231)
XTILoger.default.error(1231)

后续会加入写入本地文件的功能

XTIMacros

整合一些常用的值,例如:

​ 取屏幕宽度:XTMacros.SCREEN_WIDTH

​ 取屏幕高度:XTMacros.SCREEN_HEIGHT

​ 判断是否是iPhone x:XTMacros.isIphoneX

···等等的

XTITool

获取rootVC、currentVC、keyWindow

2018/3/21:添加通过版本号字符串比较版本号的函数

XTITool.keyWindow.rootViewController = ViewController()    //修改根控制器
XTITool.currentVC.xti_pushOrPresentVC(ViewController())    //从当前活动的控制器调转到ViewController,如果当前控制器在navigetionVC上那么久push,否则present

UINavigationController

这部分的扩展来自:FDFullscreenPopGesture 感谢forkingdog

加入全屏滑动返回

有两个开关,一个是全局设置开关,需要在应用第一个UINavigationController对象初始化之前设置。

另一个是针对单个UINavigationController的,该开关优先级大于全局开关

使用方法:

在application(_:didFinishLaunchingWithOptions:)函数里: 
UINavigationController.xti_openBackGesture = false

在项目UINavigationController封装的基类里:
override func xti_openBackGesture() -> Bool {
return ture
}

UIViewController

隐藏导航栏和禁用右划返回参考FDFullscreenPopGesture

禁用右划返回仅仅在xti_openBackGesture开启的时候才会生效

扩展功能:

  1. 设置导航栏左右两边按钮<仅支持添加一个>,如果不带action参数,点击的回调则是xti_toucheLeftBarButtonItemxti_toucheRightBarButtonItem

    xtisetBarButtonItem(:title:img:titleColor:action:)

  2. 跳转到其它控制器,根据当前控制器的跳转模式(push、present)自动选择跳转模式,动画参数默认是true

    xtipushOrPresentVC(:animated:)

  3. 关闭当前控制器,和跳转其它控制器方法对应,动画参数默认是true,completion参数默认为nil

    xtipopOrDismiss(:completion:)

  4. 通过StoryBoard初始化控制器,该方法如果不传withIdentifier默认使用控制器类名,也就是说如果在StoryBoard里面将控制器的StoryBoard ID设置成类名就只要StoryBoard文件名一个参数就可以了

    initwithstoryboard(_:withIdentifier:)

  5. 设置展示在下一级界面导航栏返回按钮的文案和颜色,系统默认是显示该控制器的标题,颜色是蓝色

    xti_nextBackTitle、xti_nextBackColor

  6. 设置不同的tabbar标题和navigation标题

    xti_tabbarTitle、xti_navigationTitle

  7. 设置导航栏背景色,不支持透明通道,每一个控制器都可以设定不一样的颜色

    xti_navigationBarBackgroundColor

使用方法:

self.xti_navigationTitle = "navigation标题"    //设置导航栏标题,当导航栏标题和标签栏标题的不一致时使用
self.xti_setBarButtonItem(.right, title: "测试")//通过`title`设置导航栏右边的按钮,也可以通过图片设置
self.xti_nextBackTitle = "返回"        //设置下一级控制器的导航栏返回按钮的文案
self.xti_nextBackColor = UIColor.red    //设置下一级控制器的导航栏返回按钮的颜色
self.xti_navigationBarHidden = true    //隐藏导航栏
self.xti_disabledBackGesture = true    //禁用右划返回手势
self.xti_tabbarTitle = "tabbar标题"    //设置标签栏标题,当导航栏标题和标签栏标题的不一致时使用

//通过Storyboard名字初始化控制器,并使用xti_pushOrPresentVC跳转
self.xti_pushOrPresentVC(ViewController.initwithstoryboard("Storyboard"))
//关闭当前控制器
self.xti_popOrDismiss()
//设置导航栏背景颜色
self.xti_navigationBarBackgroundColor = UIColor.red

UITabBarController

扩展一个直接添加addChildViewController的方法

将选中图片、默认图片、标签的标题、控制器做参数传递

xtiaddChildViewController(:tabbarTitle:image:selectedImage)

最后

有些功能扩展没有写上来,代码里有部分注释,请参考注释。

还有一些其他开发笔记之类的可以到我的博客上查看:小唐朝的blog

License

XTInputKit is available under the MIT license. See the LICENSE file for more info.

Latest podspec

{
    "name": "XTInputKit",
    "version": "0.2.3",
    "summary": "u4e00u4e9bu5e38u7528u7684iOSu5f00u53d1u4ee3u7801u53cau6269u5c55u96c6u5408uff0cu4f8bu5982u6253u5370u65e5u5fd7u7684u5de5u5177XTILogeruff0cu752816u8fdbu5236u53d6u989cu8272uff0ckeychainuff0cNetWorku00b7u00b7u00b7",
    "description": "TODO:u5e73u65f6u5f00u53d1u79efu7d2fu7684u4ee3u7801u6574u5408u8d77u6765u7684u3002u5305u62ecu4e14u4e0du9650u4e8eUINavigationControlleru3001UIViewControlleru3001UITabBarControlleru7684u6269u5c55uff0cu4ee5u53caStringu3001Dateu3001DispatchQueueu7684u6269u5c55u3002",
    "homepage": "https://github.com/xt-input/XTInputKit",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "xt-input": "[email protected]"
    },
    "source": {
        "git": "https://github.com/xt-input/XTInputKit.git",
        "tag": "0.2.3"
    },
    "platforms": {
        "ios": "10.0"
    },
    "swift_versions": "5",
    "requires_arc": true,
    "swift_version": "5",
    "subspecs": [
        {
            "name": "XTILoger",
            "source_files": "XTInputKit/Classes/XTILoger/*.swift"
        },
        {
            "name": "Extension",
            "source_files": "XTInputKit/Classes/Extension/**/*.swift"
        },
        {
            "name": "XTITool",
            "source_files": "XTInputKit/Classes/XTIClass/*.swift"
        },
        {
            "name": "XTINetWork",
            "source_files": "XTInputKit/Classes/Network/*.swift",
            "dependencies": {
                "XTInputKit/XTILoger": [],
                "XTInputKit/XTITool": [],
                "HandyJSON": [
                    "~> 5.0.0"
                ],
                "Alamofire": [
                    "~> 5.0.0-beta.6"
                ]
            }
        }
    ]
}

Pin It on Pinterest

Share This