たった一行で3日もハマッた。もうだめぽな
ま〜ちさんです。
iOS App‘s UIView Animation suddenly become very fast
http://stackoverflow.com/questions/16436532/ios-app-s-uiview-animation-suddenly-become-very-fast
iOS7でUIViewアニメーションが機能しない
http://paranishian.hateblo.jp/entry/objc/uiview-animation-not-work-in-ios7
いろいろググってなんかそれっぽい現象になってる人がいたんだけどどーにもこーにも解決しないであれこれ試行錯誤しますた。
現象としては、
[UIView animateWithDuration:0.5f
delay:0.0f
options:UIViewAnimationCurveEaseInOut
animations:^{
// アニメーションをする処理
} completion:^(BOOL finished) {
// アニメーションが終わった後実行する処理
}];
ってのをやっていて、cocos2d-iPhoneでタイトル画面では上のUIView Block Animationはちゃんと動くんだけど、いざ一度
[[CCDirector sharedDirector] replaceScene:]
してしまうと、次からはずっと
「スルーされるよ(というかdurationが無視される?)」
という状態になってしまうのです。そりゃーもうDurationがskipというか0になっちまうんで、にょいーんと動くとこがシュバッってなって頭を抱えるのです。
cocos2d-iPhoneとiOS7のせいだろコレ!(怒)
と完全に決めつけていて数百回いろんなEnglishでググるも上記のようなやつしかでてこず。
そいでさっき試しに、
Delegateで
[director_ runWithScene:];
するとこをタイトル画面からゲームシーンに替えたりしてUIView animateWithDurationして
replaceSceneしてUIView animateWithDurationしたら、
あれ?ちゃんと動くよ?
になったのです。
ということはタイトル画面からreplaceSceneするときになんかやっちまってるんだよコレ。
うーんうーん、一行ずつコメントアウトしてはテストしてを数時間繰り返して・・・
-(void) removeMyAds {
UIWebView *adswebView = (UIWebView *) [[[CCDirector sharedDirector] view] viewWithTag:TAG_ADSWEBVIEW];
[UIView beginAnimations:@”animateAdBannerOff” context:NULL];
adswebView.frame = CGRectOffset( adswebView.frame, 0.0, -50.0 );
}
という広告を非表示にするところで
ハッ!
となったのです。
他のUIView beginAnimationsを見るとちゃんとやってるのよ
[UIView commitAnimations];
を。ここだけしてなかったの(T o T)
うそだろ・・・??このせい・・・??
-(void) removeMyAds {
UIWebView *adswebView = (UIWebView *) [[[CCDirector sharedDirector] view] viewWithTag:TAG_ADSWEBVIEW];
[UIView beginAnimations:@”animateAdBannerOff” context:NULL];
adswebView.frame = CGRectOffset( adswebView.frame, 0.0, -50.0 );
[UIView commitAnimations];
}
はいOKです。以後ちゃんとblock animationできました!
・・・というわけで、UIView beginAnimationsしたらしっかりUIView commitAnimationsしないと以後Animationsがぶっ壊れるよ!!iOS7からだよ!!イエーーーーーイ!!
もうだめぽ。。。
_| ̄|○_| ̄|○_| ̄|○_| ̄|○_| ̄|○_| ̄|○_| ̄|○_| ̄|○_| ̄|○_| ̄|○_| ̄|○_| ̄|○