0

UIView を場所 A からフェードアウトさせ、同時に場所 B でフェードインできるようにしたいと考えています。これはiOSで可能ですか?

4

2 に答える 2

0

はい、これらの行に沿って何か:

    [UIView animateWithDuration:0.25 animations:^{

    self.viewA.frame = CGRectMake... // middle point
    self.viewA.alpha = 0.0f;

    }completion:^ (BOOL finished) 
 {
    [UIView animateWithDuration:0.25 animations:^{

    self.viewA.frame = CGRectMake... // final point
    self.viewA.alpha = 1.0f;
    }];
 }];
于 2013-07-21T20:38:20.557 に答える
0

1 つの方法は、ビューのイメージを作成し、実際のビューの上に (イメージ ビューで) 画面に配置し、ビューのアルファを 0 に設定し、そのフレームを設定 (またはレイアウト制約を調整) して新しい位置に配置することです。をクリックし、画像をフェードアウトして実際のビューにフェードインするアニメーションを開始します。

このようなものが動作するはずです:

#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface ViewController ()
@property (weak,nonatomic) IBOutlet UIView *fadingView;
@property (weak,nonatomic) IBOutlet NSLayoutConstraint *topCon;
@property (strong,nonatomic) UIImageView *iv;
@end

@implementation ViewController

-(IBAction)moveView:(id)sender {
    UIImage *viewimage = [self imageWithView:self.fadingView];
    self.iv = [[UIImageView alloc] initWithFrame:self.fadingView.frame];
    self.iv.image = viewimage;
    [self.view addSubview:self.iv];
    self.fadingView.alpha = 0;
    self.topCon.constant = 200; // topCon is IBOutlet to the top constraint to the superview

    [UIView animateWithDuration:1 animations:^{
        self.fadingView.alpha = 1;
        self.iv.alpha = 0;
    } completion:^(BOOL finished) {
        [self.iv removeFromSuperview];
    }];
}

- (UIImage *)imageWithView:(UIView *)view {
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.bounds.size.width, view.bounds.size.height), view.opaque, [[UIScreen mainScreen] scale]);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}
于 2013-07-21T20:51:55.267 に答える