程序员日常

本行三件事:猎龙 训龙 调教龙

2018-04-27  本文已影响5人  听风轻咛

第一件:

今天在Nothing项目中添加了一个小的功能,就是按压屏幕出现一个有弹出效果的Label,涉及到的点;

  1. thereis
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

注意第四个取消函数,调用时机是触摸被取消,一定要注意是被取消,自己主动点击然后结束这不叫取消,举个例子如在触摸过程中被来电打断,这种情况才算;
回调中可以通过UITouch来操作点击次数和手指数,UIEvent可以操作屏幕点信息,这样就把手指与屏幕的交互处理完成。

//进入时的设置
        //向x y轴方向平移 0 0
        self.transform = CGAffineTransform(translationX: 0, y: 0) //(1)
        self.transform = CGAffineTransform(rotationAngle: 0) // (2)
        
        self.transform = CGAffineTransform(scaleX: 0.1, y: 0.1) //(3)
        //transform scale 改变中间不能添加其他变换
        //动画播放
        UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations: {
            self.transform = CGAffineTransform(scaleX: 1, y: 1)
        }, completion: nil) //(4)

如上代码(2)如果放在(3)(4)的中间,则动画会不执行,直接形成动画后的结果,天知道这其中发生了什么,怕是动画函数做了某些优化,如果你知道,还请赐教。

UIView.animate(withDuration: 1, delay: 0, 
usingSpringWithDamping: 0.5, 
initialSpringVelocity: 0.5, options: .curveEaseIn, animations: {
           self.transform = CGAffineTransform(scaleX: 1, y: 1)
}, completion: nil)
// 抗阻尼 以及 弹簧 的问题
// 涉及到了一些物理知识,不细究
// 只是贴出这个api 注意用法
  1. 仿射变换

仿射空间和仿射变换
关于仿射变换的先看这篇文章了解一下吧,它是计算机图形学中一个很重要的概念,简单的理解就是线性变换加上平移变换,当然看到这里你得先知道什么是线性变换和平移变换,好了,这个概念先不多说了。

  1. currying function
    经过了一系列的实验,最终得出了一个函数链的方案,虽然跟柯里化没有什么关系,代码如下,细细品味一下:
public func maybe(noDate: NODate, _ some: () -> ()) -> ThereIs {
        switch noDate {
        case let .April(date):
            let myDate = date.toDate()
            let currentDate = Date()
            if let myDate = myDate {
                if myDate.compare(currentDate) == .orderedSame {
                    some()
                }
            }
        }
        return self
    }

其实也没有多么深奥,只是函数在调用外部传进的闭包后又返回了自身,然而,就是一个这样简单的设计,在调用时你会发现是多么的便利;

_ = thereis?.maybe(noDate: dates[0]) {
                self.noLabel.appear()
            }
            .maybe(noDate: dates[1]) {
                
            }

上图中的maybe函数可以无限调用,这样根据传进来的参数可以实现一个小功能,如果将本方法的类似方法分散在不同的函数中调用,那么我们可以用传进不同参数来区分调用的时机,这样可以将某一次的逻辑调用统一在一个地方处理,说的有点绕,用一张图来理一下思路:

maybe函数思维导图

第二件

此时我面前有一个作业,叫做文献综述,今天跟老铁聊天中发现自己在面对困难问题时拖延的问题。朋友说当你有一大堆的事情不知道做哪件时,挑最难的那件事情做。
于是把每天最棘手的问题做为首要,比方说难做的作业,比方说写一篇文章。


轻课听力

上图是昨晚在轻课群的口语练习,留作复习用。

第三件

已经很久没有写日志了,这么些年断断续续的,从来没把它当作一个习惯来做。在github上看到一个学习库,有所启发,想来该培养一个习惯来让自己保持一个学习的状态。完成的并不一定要完美,完成就好,记录下心情,记录下问题,记录下昨天那个“愚蠢”的自己。

上一篇下一篇

猜你喜欢

热点阅读