小编Lul*_*Cow的帖子

默认 UIViewController 呈现动画的精确缓动和计时

我正在尝试制作一个自定义 CATransition,以便推送一个 viewController 看起来与以模态方式呈现一个完全相同。

到目前为止,我有这对于

override func viewWillAppear(_ animated:Bool){
    super.viewWillAppear(animated)
    self.transition = CATransition()
    self.transition.duration = 0.4
    self.transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    self.transition.type = kCATransitionMoveIn
    self.transition.subtype = kCATransitionFromTop
    self.transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    self.navigationController?.view.layer.add(self.transition, forKey: nil)
}
Run Code Online (Sandbox Code Playgroud)

这是解雇

override func viewWillDisappear(_ animated:Bool){
    super.viewWillDisappear(animated)
    self.transition.type = kCATransitionReveal
    self.transition.subtype = kCATransitionFromBottom
    self.navigationController?.view.layer.removeAllAnimations()
    self.transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    self.navigationController?.view.layer.add(self.transition, forKey: nil)
}
Run Code Online (Sandbox Code Playgroud)

这就是我从 navigationController 推送它的方式

self.navigationController?.pushViewController(myViewController(), animated: false)
Run Code Online (Sandbox Code Playgroud)

我所拥有的与默认的 UIViewController.present(vc,animated:true,completion:nil) 动画并没有太大的不同,但它有细微的不同,尤其是缓动和解除动画。

有谁知道我可以使用哪些确切值来最接近地复制我正在寻找的动画?

catransition ios swift

5
推荐指数
1
解决办法
970
查看次数

仅使用按位运算符以二进制形式执行算术运算

可能重复:
如何仅使用位移和加法进行乘法和除法?

我必须编写函数来执行二进制减法,乘法和除法,而不使用除循环控制之外的任何算术运算符.我之前只用Java编写代码,所以我很难绕过这个问题.

从减法开始,我需要用原型编写一个函数

int bsub(int x, int y)
Run Code Online (Sandbox Code Playgroud)

我知道我需要将y转换为二进制补码以使其为负数并将其添加到x,但我只知道如何通过使用一个补码运算符并添加1,但我不能使用+运算符.

提供了badd函数,如果我能弄清楚如何制作负数,我将能够在bsub中实现它.badd的代码如下所示.提前感谢任何提示.

int badd(int x,int y){

int i;

char sum;
char car_in=0;
char car_out;
char a,b;

unsigned int mask=0x00000001;
int result=0;

for(i=0;i<32;i++){

  a=(x&mask)!=0;
  b=(y&mask)!=0;
  car_out=car_in & (a|b) |a&b;
  sum=a^b^car_in;

  if(sum) {
     result|=mask;
  }

  if(i!=31) {
     car_in=car_out;
  } else {
     if(car_in!=car_out) {
        printf("Overflow occurred\n");
     }
  }

  mask<<=1;
  }

 return result;
  }
Run Code Online (Sandbox Code Playgroud)

c binary bit-manipulation twos-complement

1
推荐指数
1
解决办法
2万
查看次数

等待在调度异步操作的函数中返回(Swift + Parse)

这是执行异步块的一个基本问题,我还没有找到一个好的解决方案.

以下代码有效,但它阻止了主线程,我想避免这种情况.

override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
    //check if transaction already exists
    let trans = PFQuery(className: "Transactions")
    trans.whereKey("itemId", equalTo: self.pfObject.objectId!)

   //I need the count of objects in the query before I can proceed, but I don't want to block the main thread
   let count = trans.countObjects()
   if(count > 0){
        return false
    }else{
        return true
    }
}
Run Code Online (Sandbox Code Playgroud)

此问题并非特定于我的应用程序的这一部分.通常,我可以在query.countObjectsInBackGroundWithBlock()之类的闭包中设置"count"(或者我需要的任何变量),但是当我需要在主线程上返回一些东西时我不能这样做.

有没有一个解决方案让我的应用程序等待返回而不阻塞主线程?我实际上并不认为在这种情况下没有重新设计大部分代码,但我只是想确保我不是天真的.

对于这些类型的问题,有哪些可接受的解决方案?

multithreading ios parse-platform swift

1
推荐指数
1
解决办法
272
查看次数