12月 2011
1件の投稿
9月 2011
2件の投稿
7月 2011
1件の投稿
[CATransaction flush]とは何か
通常はRunLoopの終わりで勝手に呼ばれる。
なので呼ぶ必要は無いんだけど、何かの事情でRunLoopがその後終了しないとき
呼んであげると、アニメーションが始まる。
たとえば、こんなコードで試せる。
[CATransaction flush]を呼ばないとアニメーションしない。
- (void)action
{
CABasicAnimation* animation;
animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
animation.fromValue = [NSNumber numberWithFloat:1.0];
animation.toValue = [NSNumber numberWithFloat:0.0];
animation.duration...
6月 2011
1件の投稿
4月 2011
26件の投稿
CARenderer
OS Xのみしか無いCARenderer、iOSでもUndocument Classだけど存在してて
OpenGLの世界と繋げるClassなので、EAGLContextを使うようになってる。
+ (id)rendererWithEAGLContext:(id)fp8 options:(id)fp12;
OS Xのイニシャライズメソッドはこれ
+ (CARenderer *)rendererWithCGLContext:(void *)ctx options:(NSDictionary *)dict;
Animatable UIView properties
UIViewのPropertyのいくつかはアニメーション可能
http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html
Animatable UIView properties
に書いてある
だがしかし、それだけではなくて
UIScrollViewのcontentOffsetも
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
があるように、アニメーションできる。
ということは、ドキュメントには書いてないけど
...
UIScrollViewとCAScrollViewは友達か?
どうも違うみたい。要継続調査
(この調査がなんの役に立つというのだろう)
CAScrollLayer →
CAScrollLayerは、上に乗っけてるSubLayerをスクロールさせるLayer。
CAScrollLayer.contentsがスクロールするわけではない!
UIScrollViewみたいにバウンドするアニメーションを提供してくれるわけではないので、ちょいと使いづらいかなぁ。逆に言えばCAKeyframeAnimationを使って、設定してあげれば自分でバウンドが作れる。
と思ったけど
- (void)scrollToPoint:(CGPoint)p;
しかないので、それたぶん無理。
1タグ
Core Animationはかなり謎が多いことが予想されるけど、CABasicAnimationの
+ (id)defaultValueForKey:(NSString *)key
のkeyに見たことが無いのが来るのが判明して、上書きしたら面白いことになった。
keyがframeIntervalのとき、[NSNumber numberWithFloat:1.0/10]って返すと、フレームレートが10になる。フェードだとカクカクフェードアウトする
CALayer.doubleSided
doubleSided
Determines whether the receiver is displayed when facing away from the viewer. Animatable.
@property(getter=isDoubleSided) BOOL doubleSided
Discussion
If NO, the layer is hidden when facing away from the viewer. Defaults to YES.
Availability
Available in iOS 2.0 and later.
Declared In
CALayer.h facing away = 反対方向を向いたとき = 裏返しになったときに、表示するかどうか。デフォルトはYES...
CALayerのShadow
まず、layer.shadowOpacityがdefaultで0なので、これを設定しないと影が出ない。
で、以下だけだとパフォーマンスがやたら悪いので
layer.shadowRadius = 3;
layer.shadowColor = [UIColor blackColor].CGColor;
layer.shadowOpacity = 0.5;
layer.shadowOffset = CGSizeMake(1, 3); //defaultは 0, -3
これを追加すると(Pathを渡すと)めちゃめちゃ速い。
layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
CALayerのShadowは、PathをLayerの裏側で描画してくれる機能と考えていい。
...
defaults write com.apple.finder AppleShowAllFiles true
不可視ファイルを非表示にする時は、ターミナルで次のコマンドを入力します。
defaults write com.apple.finder AppleShowAllFiles false
変更した設定を反映させるには、マシンを再起動するか、再ログインするか、次のコマンドを入力するか、いずれかの操作が必要です。
killall Finder
CATransactionとBlock
Discussion
The completion block object that is guaranteed to be called (on the main thread) as soon as all animations subsequently added by this transaction group have completed (or have been removed.) If no animations are added before the current transaction group is committed (or the completion block is set to a different value,) the block will be invoked immediately.
Available in iOS 4.0 and...
1タグ
1タグ
1タグ
CALayerはModel設計の中心になっていい
ModelはNSManagedObjectとCALayerを多重継承すべき!みたいなことを言ってもいいぐらい、CALayerはObjective-CのModelクラス群の中でも中心的存在になってもいいんじゃないか、と思ったけど、実戦で一回も継承したことない
むしろ、継承しなくてもよいような仕組みがいろいろ備わっているので、そういうことなのかなと思ったりもするけど、よく分からん
つまり、永続化が必要ならNSManagedObjectを継承する(Core Data使う)みたいに、ModelをビジュアライズするならCALayer継承する(Core Animation)、って意味でのModel設計における中心 (当然場合による)
CALayerは.frame,...
1タグ
unichar c = [@”♠” characterAtIndex:0];
CTFontGetGlyphsForCharacters(font, &c, glyphs, 1);
とすると、♠のGlyphが取得できるけど、Fontがヒラギノとかじゃないとpathが取れないぽ
1タグ
CG***Createしたら、CG***Releaseしないといけないよ
Quartz 2D Programming Guideによると、Quartz 2Dのは全部、CFRetainとCFReleaseが使えるよ、ただしNULLは渡しちゃいけません、って書いてるように読める。これの一番下 >http://bit.ly/gc0BwW
1タグ
CAAnimationを使わないでアニメーションさせるとき(に使える必要があるからかな。たとえばlayer.speed = 0.1; でアニメーション・スピードが1/10にできる。
1タグ
独自のLayerクラス作れないかなーと思ってたんだけど、CAShapeLayerと同じ機能のクラスは自作できるな、たぶん。あ、いや、.pathをアニメーションさせるのはやや困難だ。
1タグ
Animation is the state of being alive. ってなんかかっこよくないか。しかしCore Animationでは、Modelのプロパティの値を時間によって変えるのをAnimationって言うよ!らしい。
CAMediaTiming protocolにCAAnimationだけじゃなくてCALayerも準拠しているのはなんでだろう
CAAnimationを使わないでアニメーションさせるとき(に使える必要があるからかな。たとえばlayer.speed = 0.1; でアニメーション・スピードが1/10にできる。
...
1タグ
Core AnimationなUIにすると、Objectが動くから音が欲しくなるわけでございますよ
1タグ
CATransaction setCompletionBlockってsetAnimationDurationとかごにょごにょする前に(beginの直後に)呼ばないといかんようですわ-