objective c - UIViewController Animation ios? -
trying create below in objective-c, available in swift. tried using bridging etc, use code objective c project it's having import issues.
in objective-c tried below things , partially works uiview, guess need add transitions complete uiviewcontroller.

what tried
- (ibaction)menubuttonpressed:(id)sender { if ([self.delegate respondstoselector:@selector(menubuttonpressed)]) { [self.delegate menubuttonpressed]; } if (!isvertical) { [uiview animatewithduration: 0.6 delay: 0.0 usingspringwithdamping: 0.3 initialspringvelocity: .8 options: 0 animations: ^ { self.transform = cgaffinetransformtranslate(self.transform, -240, 0); self.transform = cgaffinetransformrotate(self.transform, 90 * m_pi / 180); self.transform = cgaffinetransformtranslate(self.transform, 240, 0); } completion:^(bool finished) { isvertical = yes; } ]; }else{ [uiview animatewithduration: 0.45 delay: 0.0 usingspringwithdamping: 0.44 initialspringvelocity: .8 options: 0 animations: ^ { self.transform = cgaffinetransformtranslate(self.transform, -240, 0); self.transform = cgaffinetransformrotate(self.transform, -90 * m_pi / 180); self.transform = cgaffinetransformtranslate(self.transform, 240, 0); } completion:^(bool finished) { isvertical = no; } ]; } } any inputs helpful.
here simple implementation can use animate transitions between view controllers. use same animation gist if want use uiviews.
let generaterandomcolor: void -> uicolor = { let red = cgfloat(arc4random_uniform(255)) / 255.0 let green = cgfloat(arc4random_uniform(255)) / 255.0 let blue = cgfloat(arc4random_uniform(255)) / 255.0 return uicolor(red:red, green: green, blue: blue, alpha: 1) } class slideanimationcontroller: nsobject, uiviewcontrolleranimatedtransitioning { let presenting: bool init(presenting: bool) { self.presenting = presenting super.init() } func transitionduration(transitioncontext: uiviewcontrollercontexttransitioning?) -> nstimeinterval { return 0.5 } func animatetransition(transitioncontext: uiviewcontrollercontexttransitioning) { let containerview = transitioncontext.containerview()! let fromview = transitioncontext.viewforkey(uitransitioncontextfromviewkey)! let toview = transitioncontext.viewforkey(uitransitioncontexttoviewkey)! var animatingview: uiview var initialtransform: cgaffinetransform var finaltransform: cgaffinetransform if presenting { containerview.addsubview(toview) animatingview = toview initialtransform = cgaffinetransformmakerotation(cgfloat(-m_pi_2)) finaltransform = cgaffinetransformidentity } else { containerview.insertsubview(toview, belowsubview: fromview) animatingview = fromview initialtransform = cgaffinetransformidentity finaltransform = cgaffinetransformmakerotation(cgfloat(-m_pi_2)) } animatingview.layer.anchorpoint = cgpointmake(0, 0) animatingview.frame = containerview.bounds animatingview.transform = initialtransform uiview.animatewithduration(transitionduration(transitioncontext), delay: 0, usingspringwithdamping: 0.6, initialspringvelocity: 16, options: uiviewanimationoptions.curvelinear, animations: { () -> void in animatingview.transform = finaltransform }) { _ in toview.layer.anchorpoint = cgpointmake(0.5, 0.5) toview.frame = containerview.bounds transitioncontext.completetransition(true) } } } class presentedviewcontroller: uiviewcontroller { override func viewdidload() { super.viewdidload() view.backgroundcolor = generaterandomcolor() let tapgesturerecognizer = uitapgesturerecognizer(target: self, action: "tapped") view.addgesturerecognizer(tapgesturerecognizer) } func tapped() { dismissviewcontrolleranimated(true, completion: nil) } } class testviewcontroller: uiviewcontroller, uiviewcontrollertransitioningdelegate { override func viewdidload() { super.viewdidload() view.backgroundcolor = generaterandomcolor() let tapgesturerecognizer = uitapgesturerecognizer(target: self, action: "tapped") definespresentationcontext = true view.addgesturerecognizer(tapgesturerecognizer) } func tapped() { let presentedviewcontroller = presentedviewcontroller() presentedviewcontroller.modalpresentationstyle = uimodalpresentationstyle.currentcontext presentedviewcontroller.transitioningdelegate = self presentviewcontroller(presentedviewcontroller, animated: true, completion: nil) } func animationcontrollerforpresentedcontroller(presented: uiviewcontroller, presentingcontroller presenting: uiviewcontroller, sourcecontroller source: uiviewcontroller) -> uiviewcontrolleranimatedtransitioning? { return slideanimationcontroller(presenting: true) } func animationcontrollerfordismissedcontroller(dismissed: uiviewcontroller) -> uiviewcontrolleranimatedtransitioning? { return slideanimationcontroller(presenting: false) } }
Comments
Post a Comment