2

スライドダウンしているビューをアニメーション化しています。ビューには、単純な UIButton があります。ビューとボタンの幅と高さは固定されています(背景として色を追加して確認しました)。使用する場合:

[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        //Slide Down the notification
        CGRect notificationsRect = self.notificationContainerView.bounds;
        notificationsRect.origin.y = 0;
        notificationViewController.view.frame = notificationsRect;
    } completion:^(BOOL finished) {
        [notificationViewController didMoveToParentViewController:self];
        self.currentNotification = notificationViewController; 
}];

その後、ビューは完全にスライドダウンします.UIButtonのテキストがフェードインすることを期待してください.それは本当に小さく始まり、正しいフォントサイズにアニメーション化されます.

UIButton のテキストのアニメーションを無効にするにはどうすればよいですか?

4

3 に答える 3

7

: メソッドを使用してperformWithoutAnimation、後でではなく、すぐにレイアウトを実行するように強制します。

[UIView performWithoutAnimation:^{
  [self.myButton setTitle:text forState:UIControlStateNormal];
  [self.myButton layoutIfNeeded];
}]; 
于 2015-08-25T22:57:06.043 に答える
0

あなたが持っている効果は、以下のものに似ていますか? ボタンのタイトルにいくつかのテキストが設定された UIButton を内部に持つビューを作成することで、状況を模倣しようとしました。次に、あなたと同じようにボタンをアニメーション化しました。ご覧のとおり、スライドしているビュー内のボタンのテキストで実際にフェードが発生していないので、他に何か問題があるのではないかと思います。状況を模擬するために、以下で使用したコードもあります。

ここに画像の説明を入力

- (void)viewDidLoad {
    [super viewDidLoad];
    self.myView = [[UIView alloc] initWithFrame:CGRectMake(200, 0, 100, 100)];
    self.myView.backgroundColor = [UIColor greenColor];
    UIButton *myButton= [[UIButton alloc] initWithFrame:CGRectMake(10, 0, 80, 80)];
    myButton.backgroundColor = [UIColor blueColor];
    [myButton setTitle:@"fun times" forState:UIControlStateNormal];
    [self.myView addSubview:myButton];
    [self.view addSubview:self.myView];

    UIButton *resetButton = [[UIButton alloc] initWithFrame:CGRectMake(300, 300, 50, 50)];
    resetButton.backgroundColor = [UIColor blackColor];
    [resetButton addTarget:self action:@selector(reset) forControlEvents:UIControlEventTouchUpInside];

    UIButton *goButton = [[UIButton alloc] initWithFrame:CGRectMake(300, 100, 50, 50)];
    goButton.backgroundColor = [UIColor redColor];
    [goButton addTarget:self action:@selector(go) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:goButton];
    [self.view addSubview:resetButton];
}

- (void)reset {
    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        //Slide Up the notification
        CGRect notificationsRect = self.myView.bounds;
        notificationsRect.origin.y = 0;
        notificationsRect.origin.x = 200;
        self.myView.frame = notificationsRect;
    } completion:nil];
}

- (void)go {
    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        //Slide Down the notification
        CGRect notificationsRect = self.myView.bounds;
        notificationsRect.origin.y = 200;
        notificationsRect.origin.x = 200;
        self.myView.frame = notificationsRect;
    } completion:nil];
}
于 2015-08-25T23:21:39.190 に答える