首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用翻转过渡改变leftBarButtonItem?

在iOS开发中,我们可以使用翻转过渡来改变leftBarButtonItem。以下是一个简单的示例,展示了如何使用翻转过渡来改变leftBarButtonItem:

  1. 首先,在视图控制器中创建两个UIBarButtonItem:
代码语言:swift
复制
let firstBarButtonItem = UIBarButtonItem(title: "First", style: .plain, target: self, action: #selector(changeBarButtonItem))
let secondBarButtonItem = UIBarButtonItem(title: "Second", style: .plain, target: self, action: #selector(changeBarButtonItem))
  1. 创建一个方法来改变leftBarButtonItem:
代码语言:swift
复制
@objc func changeBarButtonItem() {
    let currentBarButtonItem = navigationItem.leftBarButtonItem
    navigationItem.leftBarButtonItem = (currentBarButtonItem == firstBarButtonItem) ? secondBarButtonItem : firstBarButtonItem
}
  1. 将第一个UIBarButtonItem设置为leftBarButtonItem:
代码语言:swift
复制
navigationItem.leftBarButtonItem = firstBarButtonItem
  1. 在视图控制器中实现UINavigationControllerDelegate协议,并设置代理:
代码语言:swift
复制
class ViewController: UIViewController, UINavigationControllerDelegate {
    // ...
    override func viewDidLoad() {
        super.viewDidLoad()
        navigationController?.delegate = self
    }
    // ...
}
  1. 实现navigationController(_:animationControllerFor:)方法,以便在导航过渡中使用翻转过渡:
代码语言:swift
复制
func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
    return FlipTransition()
}
  1. 创建一个翻转过渡类,实现UIViewControllerAnimatedTransitioning协议:
代码语言:swift
复制
class FlipTransition: NSObject, UIViewControllerAnimatedTransitioning {
    func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
        return 0.5
    }
    
    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        let containerView = transitionContext.containerView
        guard let fromView = transitionContext.view(forKey: .from), let toView = transitionContext.view(forKey: .to) else { return }
        
        containerView.addSubview(toView)
        toView.alpha = 0
        
        let duration = transitionDuration(using: transitionContext)
        
        UIView.animate(withDuration: duration, animations: {
            fromView.transform = CGAffineTransform(rotationAngle: -CGFloat.pi/2)
            toView.alpha = 1
        }) { _ in
            fromView.transform = .identity
            transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
        }
    }
}

现在,当您点击leftBarButtonItem时,它将使用翻转过渡来改变leftBarButtonItem。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS仿微信相册界面翻转过渡动画

点开微信相册的时候,想要在相册图片界面跳转查看点赞和评论时,微信会采用界面翻转过渡动画来跳转到评论界面,好像是在图片界面的背面一样,点击完成又会翻转回到图片界面,这不同于一般的导航界面滑动动画,觉得很有意思...,于是自己学着做了一下,其实也很简单,下面是实现的类似的效果图: 在图片界面点击右下角的查看评论会翻转到评论界面,评论界面点击左上角的返回按钮会反方向翻转回图片界面,真正的实现方法,与传统的导航栏过渡其实只有一行代码的区别...,这里options的参数可以看出,动画是从右边开始翻转的,duration表示动画时间,很简单地就实现了翻转到评论界面。...返回" style:UIBarButtonItemStyleBordered target:self action:@selector(back)]; self.navigationItem.leftBarButtonItem...NSTextAlignmentCenter; [self.view addSubview:label]; } 可以看到,我们自定义了一个UIBarButtonItem按钮,然后用它放在导航栏的leftBarButtonItem

1.1K30
  • Arctoris|自动化改变药物发现

    机器人、自动化和AI技术正在改变药物发现的方式。一些远程自动化智能化实验室逐渐兴起。 本文介绍了机器人自动化公司Arctoris的理念和特点。...Martin的这种临床医生-科学家的路线,本来是为了通过获得实验室研究经验,来增强自己的临床研究工作,但是却意外地改变了他的职业生涯。...稳步发展 Arctoris于2016年创立,在2017年申请并赢得了Innovate UK R&D的资助,这笔资金完成了第一批关键的工程和实验室人员招聘,并开发了第一个知识产权。...然而,在过去的几年里,这种观念的发生改变,许多行业领导者认识到数据质量对研发成功至关重要。 这种观念变化的主要驱动力之一是人工智能和机器学习的作用越来越大。...机器人技术支持AI药物发现 自动化促进了对丰富可靠的数据和元数据的捕获,从而将高质量的输入数据提供给AI算法并提高其性能。 数据质量、数据结构和数据生成速度对于机器学习应用来说非常关键。

    29210

    iOS导航栏基础效果配置

    :UIBarButtonItemStyleBordered target:self action:@selector(back)]; 复制代码 //设置成文字 self.navigationItem.leftBarButtonItem...style:UIBarButtonItemStylePlain target:self action:@selector(back)]; 复制代码 //自定义视图 self.navigationItem.leftBarButtonItem...UIBarMetricsDefault]; //此处使底部线条透明 [navigationBar setShadowImage:[UIImage new]]; 复制代码 另外可以通过颜色转图片来修改导航条底部分隔线颜色 //动态地改变...UIColor的alpha属性可以返回,不同alpha的图片;可用于动态改变导航条的透明度 + (UIImage *)imageWithColor:(UIColor *)color{ CGRect...但是如果navigationBar.hidden隐藏导航栏,我们可以继续使用navigationBarHidden提供的滑动pop效果,如果navigationBarHidden,这个操作将无效;但前者

    1.6K10

    几行原生JS就可以实现丝滑的元素过渡效果!

    大家可以看下下面这个应用的页面切换体验,是不是很丝滑~ 做过体验优化的朋友应该都清楚,如果原生的 CSS 或者 JS 动画去实现,想要实现出类似的效果,不会特别简单,而且也要考虑性能问题。...} 执行一次根过渡,只需要上面几行代码: 调用 documentTransition.prepare() 函数捕获当前页面的视觉状态 调用一个更新 DOM 的函数(比如改变页面的背景色),上面例子中用的是...updateDOMForSettingsPage() 函数 调用 documentTransition.start() 函数执行转换 另外,你还可以通过 rootTransition 属性来改变过渡的方向...,比如下面几点: 过渡的页面会失去动画效果:过渡的页面会被捕获为单个帧,如果被过渡的元素上有一些 gif 或者 CSS 动画,可能会失效。...转换对整个文档生效:你还不能将过渡限制为某些内部 UI。 对过渡控制有限:现在还没法控制过渡的长度、透明度或者其他属性,未来可能会支持。

    2K30

    IOS学习——iphone X的适配

    尾部主要就是某些控件的位置出现变化,可能是因为设置的相对位置是相对view的mas_bottom设置的(项目中是纯代码布局,使用AutoLayout框架Masonry进行布局),这一块的问题很少,也很简单,改变一下相对位置的值看看效果就...]; 将自定义的按钮Button赋值给self.navigationItem.leftBarButtonItem,则其而位置由系统确定,则会出现上面的右移的情况。...UITableview的header高度变大,有的地方会出现空白cell格   iOS 11中对UITableview的改变也是蛮大的,原本的automaticallyAdjustsScrollViewInsets...某些控件的相对位置不对   这个的主要问题就是跟iPhone X的屏幕特性有关,之前都是纯代码相对布局进行画的图,iPhone X的屏幕高度增加之后,再加上iPhone X的刘海特性和底部圆角的特点...解决方案显然就是改变相关参数看效果就好了。   未完待续,目前就发现这些问题,后面再有啥问题继续加上。。。。

    1.5K60

    Gaissian16中的GIC功能实现翻转过程的势能面扫描

    取出势能曲线最高点的结构做过渡态搜索,优化两步就能收敛到翻转过渡态: ? 四、三取代膦翻转过程的势能面扫描 与三取代的胺的性质相似,三取代膦也可以有翻转过程。...有文献指出,膦被氧化生成自由基正离子之后,翻转过程的能垒会降低。这里我们首先完成膦的翻转过程的势能面扫描,再做翻转过程的过渡态搜索。 ?...取出势能曲线最高点的结构做过渡态搜索,优化三步就能收敛到翻转过渡态: ?...取出势能曲线最高点的结构做过渡态搜索,优化三步就能收敛到翻转过渡态: ? 易知膦被氧化为自由基正离子后翻转过程变得更加容易了: ? 五、总结 使用GIC可以让我们快速实现复杂反应坐标的势能面扫描。...面对翻转过程这一类扫描坐标很复杂的情况,如果不使用GIC,势能面扫描是相当难实现的。势能面扫描给出的初猜也可以让我们很快地找到翻转过程的过渡态。 参考文献 Kyle D. R., Daniel H.

    2K30

    CSS新增2D,3D属性

    rotate(numdeg) 设置元素旋转角度,负值时逆时针旋转(deg:单位); scale(w,h):指定元素高宽; ,以中心点进行缩放,如果为负则缩放到最小倍数 skew(xdeg,ydeg):指定元素翻转角度...; 3D transform rotateX(x)沿着x旋转 rotateY(y)沿着y旋转 transform-origin 允许你改变被转换元素的位置 transform-style 规定被嵌套元素如何在...元素一种状态变成另一种状态的过程,一般配合hover使用,过渡属性一般写在要过渡的元素上 使用transition :要过渡的属性 花费时间 运动曲线 何时开始 如果有多组属性变化,直接逗号隔开 transion-property...:规定应用过渡的css属性名称 transion-duration :过渡花费时间,默认0 transion-timing-function 规定过渡效果的时间曲线 默认“ease” | 值 |描述...ease-in| 规定以慢速开始的过渡效果 ease-out| 规定以慢速结束的过渡效果 ease-in-out| 规定以慢速开始和结束的过渡效果

    35620

    【CSS3】CSS3 3D 转换示例 - 盒子模型翻转示例 ( 开启透视视图 | 设置过渡动画 | 设置 3D 呈现样式 | 鼠标移动到控件上方效果 | 设置两个子盒子模型背靠背效果 )

    一、盒子模型翻转示例 1、核心要点 开启透视视图 HTML 页面 呈现 3D 效果 , 需要 设置 3D 空间中的透视效果 属性 , 该属性的 属性值 表示 观察者眼睛 ( 视点 ) 到 3D 转换元素...在 这个距离会影响 3D 转换元素的视觉效果 , 具体效果就是 " 近小远大 " ; 如果不设置 透视视图效果 , 那么 整个 三维空间 中 , 不管多远 , 显示的 标签盒子 大小都一样 ; 设置过渡动画...如果需要 为 3D 变换过程 设置过渡时间 , 只需要 在 父盒子 中设置 transition 属性即可 , transition 属性 设置 盒子模型 属性值变化时的过渡效果 ;.../* 设置过渡动画 */ transition: all 0.5s; 上述代码 告诉浏览器 该 盒子模型 及 子盒子模型 所有 可过渡 的属性值在 0.5 秒内平滑地改变 ; 设置...background-color: blue; /* 第二个子盒子 ( 背面盒子 ) 绕 Y 轴旋转 180 度 这样旋转后显示 背面 文字不会翻转

    32000

    相对路径的图片改变java winform的窗口icon

    陌生的IDE,陌生的领域,这个一时间也不知道怎么搞,不过按照道理来说,这个应该在属性页是可以配置才对的,于是便鼠标点了一下登录框所在面板,毕竟要先让IDE明确你的操作目标嘛,然后检查了一下它的属性页,...其实可以通过查API就能得到,但是,我偷懒了,直接上网查了一下,貌似有个网友说直接new一个java.awt.IconImage,参数图片的URL就可以了,嗯,这个看起来还有点靠谱,于是,马上自己动手试了一下...java.awt.Toolkit.getDefaultToolkit().getImage(getClass().getResource("images/logo.png")),getImage方法要求的参数是绝对路径的,但稍有头脑的开发人员都应该知道,绝对路径是很危险的做法...,也是很不灵活的做法,所以getClass().getResource方法来过渡,这样,就可以实现用相对路径来定义窗体的图标啦

    80020

    代码和数据改变世界,他们只需要48小时!

    香槟配啤酒,盖饭加热狗,顺便,来用技术改变一下世界,岂不是美滋滋? ▍还不知道“黑客松”?那你真的out了!...“改变世界在这里,可能真的不是说说而已。”...“你可以把它理解成为一个极客派对”,Matt说,“不过这是一个有压力的派对,乐子主要来自于极客们自己,他们享受这种自己方法解决实际问题的过程。...然后他们就说,不如我们12个小时读完《百年孤独》然后做一个汇报展示吧。我才意识到:原来这也是黑客松啊。”...大数据,阐述事实及其背后的故事和逻辑趋势。 DT时代超级英雄正在组队!你也想要成为数据侠吗?请联系我们的盟主~

    44400
    领券