目录
#AAFragmentManager
##描述
AAFragmentManager 是一个子视图管理器,负责在 UIView 中添加子视图,设计用于在带有动画的子视图控制器之间轻松切换。
##演示
要运行示例项目,首先克隆仓库,然后从 Example 目录中运行 pod install
。
##要求
- iOS 8.0+
- Xcode 8.0+
安装
AAFragmentManager
可通过 CocoaPods、Carthage 或手动安装。
##CocoaPods
AAFragmentManager
通过 CocoaPods 提供。要安装 CocoaPods,运行
$ gem install cocoapods
然后创建包含以下内容的 Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
target '<Your Target Name>' do
pod 'AAFragmentManager', '~> 2.0'
end
最后,运行以下命令进行安装
$ pod install
##Carthage
要安装 Carthage,运行(使用 Homebrew)
$ brew update
$ brew install carthage
然后将以下行添加到您的 Cartfile 中
github "EngrAhsanAli/AAFragmentManager" "master"
然后导入所有使用该库的文件中
import AAFragmentManager
##手动安装
如果您不打算使用上述提到的任何依赖项管理工具,您可以通过将 Classes 文件夹中的文件添加到项目中来手动将 AAFragmentManager
集成到项目中。
入门指南
## 创建您的fragment管理器
创建一个UIView
并将类设置为AAFragmentManager
。为该视图创建一个IBOutlet
。
@IBOutlet weak var childView: AAFragmentManager!
// Customize the replace animations with the instance
childView.nextTransition = kCATransitionFromTop
childView.prevTransition = kCATransitionFromBottom
您需要设置所有子视图的标识符,并创建一个
UIViewController
数组以传递给AAFragmentManager
。
## 配置您的子视图
按照以下方式获取特定storyboard中的子视图控制器
let vcs = AAFragmentManager.getViewControllers(withIds: #Array_of_Identifiers#, storyboard: #Storyboard_Name#)
您可以使用UIViewController
数组初始化AAFragmentManager
childView.initManager(viewControllers: #Array_of_ViewController#)
您可以通过提供父视图控制器实例和标识符来在任何位置初始化AAFragmentManager
extension AAFragmentManager {
static let instance_1 = AAFragmentManagerInstance("SampleIdentifier")
}
childView.initManager(viewControllers: #Array_of_ViewController#, parentViewController: #Parent_View_Controller#, identifier: #Instance_ID_String#)
您可以使用AAFragments
的数组初始化AAFragmentManager
extension AAFragmentManager {
static let id_frag_1 = AAFragment("ChlidVC1", storyboard: "Main")
static let id_frag_2 = AAFragment("ChlidVC2", storyboard: "Main")
}
childView.initManager(fragments: #Array_of_AAFragment#)
您可以通过提供AAFragments
的数组和父视图控制器实例以及标识符来在任何位置初始化AAFragmentManager
extension AAFragmentManager {
static let instance_1 = AAFragmentManagerInstance("SampleIdentifier")
}
childView.initManager(fragments: #Array_of_AAFragment#, parentViewController: #Parent_View_Controller#, identifier: #Instance_ID_String#)
## 获取任何子视图控制器
您可以通过索引访问来获取任何子视图控制器
let demoFragment = childView.getFragment(withIndex: 0) as! Fragment1
demoFragment.delegate = self // sets for some callback
您可以通过AAFragments
访问来获取任何子视图控制器
extension AAFragmentManager {
static let id_frag_1 = AAFragment("ChlidVC1", storyboard: "Main")
}
let demoFragment = childView.getFragment(fragment: #AAFragment#) as! Fragment1
demoFragment.delegate = self // sets for some callback
如果需要,您可以在任何地方获取静态实例
extension AAFragmentManager {
static let id_frag_1 = AAFragment("ChlidVC1", storyboard: "Main")
static let vc_frag_1 = id_frag_1.viewsController as! Fragment1
}
AAFragmentManager.vc_frag_1.clickAction(self)
请注意,如果传递无效索引,
getFragment
方法可以返回nil
。
## 在子视图之间切换
您可以通过next()和previous()方法安全地切换子视图控制器!
// replace with next fragment
childView.previous()
// replace with previous fragment
childView.next()
您可以使用单行代码切换子视图控制器
// replace fragment by index
childView.replace(withIndex: index)
// replace fragment by AAFragment
childView.replace(withfragment: .id_frag_1)
使用静态方法获取任何AAFragmentManager的实例
extension AAFragmentManager {
static let instance_1 = AAFragmentManagerInstance("SampleIdentifier")
}
// Get the instance
let manager = AAFragmentManager.getInstance(withIdentifier: .instance_1)
// Gets the parent view controller instance
let parent = manager.parentViewController
# 贡献与许可
AAFragmentManager
遵循MIT许可。有关更多信息,请参阅LICENSE文件。
欢迎拉取请求!最佳贡献将包括在典型应用程序生命周期中阻塞主线程的已知的类/方法替代或配置。
如果您想在应用程序中使用AAFragmentManager
,请发送电子邮件至Engr. Ahsan Ali