1

オブジェクトの位置を変換し、iPhone アプリでその動きをアニメーション化できるこのメソッドがあります。

-(void)translatePositionForLabel:(UILabel *)label toFrame:(CGRect)newFrame
{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    label.frame = newFrame;
    [UIView commitAnimations];
}

これは で機能することがわかりますがUILabels、このメソッドの複製がなくても (たとえば、オブジェクトを交換するだけUIButtonです)、とにかくこのメソッドを適応させて、任意のオブジェクトをフレームで渡すことができますか? オブジェクトの種類ごとに個別のメソッドを必要とするのではなく。

4

2 に答える 2

2

と の両方が に共通の祖先UILabelを持っています。の代わりにそれを渡してみてください(で定義されているラベルのプロパティを変更するだけのようです)。UIButtonUIViewlabelframeUIView

于 2012-07-05T15:44:34.577 に答える
1

UIViewアニメーションで移動するためのメソッドを使用してカテゴリを作成することもできます。

UIView+Additions.h

@interface UIView (Additions)

- (void)setFrame:(CGRect)frame animated:(BOOL)animated;

- (void)translateToPoint:(CGPoint)point animated:(BOOL)animated;

@end

UIView+Additions.m

@implementation UIView (Additions)

- (void)setFrame:(CGRect)newFrame animated:(BOOL)animated {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    self.frame = newFrame;
    [UIView commitAnimations];
}

- (void)translateToPoint:(CGPoint)point animated:(BOOL)animated {
    CGRect newFrame = self.frame;
    newFrame.origin = point;
    [self setFrame:newFrame animated:animated];
}

@end

[button setFrame:newFrame animated:YES]これで、 またはを呼び出すことができます[label setFrame:newFrame animated:YES]

于 2012-07-05T16:00:04.243 に答える