DYModalNavigationController 1.2.2

DYModalNavigationController 1.2.2

Dominik Butz维护。



  • dominikbutz

DYModalNavigationController

Version License Platform Carthage compatible

DYModalNavigationController 是一个简单的 UINavigationController 子类,使用 Swift 5.0 编写。使用场景

  • 以模态方式呈现一个带有圆角的较小视图控制器,覆盖当前上下文(例如内容相对较小时,标准的模态呈现将显示很多空空间)。设置固定大小以使导航控制器的大小不随屏幕方向改变而调整。
  • 以带有淡入过渡效果的顶部、底部、左侧和右侧边距呈现覆盖当前上下文的模态视图控制器。它背后的视图控制器在边距处仍可见(除非边距设置为 0)。在屏幕方向改变时大小会自动调整。
  • 在 SwiftUI 项目中使用,即使没有使用 UIViewControllerRepresentable。只需创建 DYModalNavigationController 实例,然后对该实例调用 present() 即可(从版本 1.2.1 开始可用)

示例项目

要检查示例项目,只需克隆仓库或下载 zip 文件。

特性

  • 创建一个固定大小的 DYModalNavigationController,当您的视图控制器实例在改变屏幕方向时不改变大小。
  • 设置背景模糊或暗淡效果
  • 自定义 DYModalNavigationController 视图的圆角
  • 设置滑动进入/退出动画(可自定义动画移动方向)或淡入/淡出动画
  • 自定义阴影
  • 自定义动画过渡持续时间

安装

推荐使用 Cocoapods 或 Carthage 进行安装。

Cocoapods

target '[项目名称]' do pod 'DYModalNavigationController' end

Carthage:简单地将以下行添加到您的 Cartfile。

github "DominikButz/DYModalNavigationController" ~> 1.0

查看下面的版本历史以获取当前版本。

然后,在项目的根目录下运行 "carthage update DYModalNavigationController --platform iOS"。遵循 GitHub 上 carthage 项目中描述的步骤(点击上方兼容 carthage 的盾牌)。

请确保将 DYModalNavigationController 导入到您的视图控制器子类中

import DYModalNavigationController

使用方法

查看以下示例。

代码示例:固定大小 DYModalNavigationController 带背景模糊

   let size = CGSize(width: 300, height: 200)
   var settings = DYModalNavigationControllerSettings()
	   settings.slideInDirection = .right
   settings.slideOutDirection = .right
   settings.backgroundEffect = .blur
   self.navController = DYModalNavigationController(rootViewController: 			contentVC(), fixedSize: size, settings: settings)

DYModalNavigationController example

代码示例:带边距和淡入效果的 DYModalNavigationController

	
   var settings = DYModalNavigationControllerSettings()
		settings.animationType  = .fadeInOut
		// animationType .slideInOut is default setting!
   self.navController = DYModalNavigationController(rootViewController: 			contentVC(), fixedSize: nil, settings: settings)
   // with fixedSize nil, the size will be set according to the top, bottom, 			left, right margins in the settings. 

DYModalNavigationController example

代码示例:带自定义动画的 DYModalNavigationController

   var settings = DYModalNavigationControllerSettings()
		settings.animationType = .custom
   self.navController = DYModalNavigationController(rootViewController: 			contentVC(), fixedSize: size, settings: settings, customPresentationAnimation: { (transitionContext) in
   
   self.foldOut(transitionContext: transitionContext, navController: self.navController)
   
       }, customDismissalAnimation: { (transitionContext) in
           
    self.foldIn(transitionContext: transitionContext, navController: self.navController)
    
       })

DYModalNavigationController example

修改日志

版本 1.2.2

导航控制器在展示时没有绑定到容器视图的底部锚点。仅当导航控制器具有固定大小且从屏幕顶部或底部进入时,约束才会生效。此更改防止在底部安全区域较大的设备(如iPhone 11等)上出现间隙。

版本 1.2.1

在DYModalNavigationControllerSettings中添加了自定义Mask属性(允许圆角)。添加了带有present功能的SwiftUI扩展。

版本 1.2

在自定义动画闭包中添加了backgroundEffectView作为可选参数。

版本 1.1

在初始化器中添加了自定义展示动画和自定义消失动画。

版本 1.0

初始版本。

作者

[email protected]

许可协议

DYModalNavigationController 采用 MIT 许可协议。更多信息请参阅 LICENSE 文件。