0

最近、フリップカードのようなプロジェクトをやっています。ビュー コントローラー内に 2 つのサブビューがあり、ボタンをクリックするとサブビューを反転したいと考えています。私が今達成できるのは、ビュー全体が反転していることですが、サブビューのみが必要です=(コードの何が問題なのか教えてください.....;(みんなありがとう

- (void)test: (id)sender{
[UIView transitionFromView:firstView
                    toView:secondView
                  duration:0.5f
                   options:UIViewAnimationOptionTransitionFlipFromRight
                completion:^(BOOL finished){
                    /* do something on animation completion */
                }];

}

- (void)viewDidLoad
{
   [super viewDidLoad];
   firstView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 250, 250)];
   secondView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 250, 250)];
   firstView.backgroundColor = [UIColor redColor];
   secondView.backgroundColor = [UIColor blueColor];
   UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
   button.frame = CGRectMake(0, 0, 25, 25);
   [button addTarget:self action:@selector(test:)forControlEvents:UIControlEventTouchUpInside];
   [self.view addSubview:button];
   [self.view addSubview:secondView];
   [self.view addSubview:firstView];
}
4

2 に答える 2

0

firstViewとsecondViewの2つのプロパティを持つUIViewサブクラス(前述のコンテナーなど)を作成することをお勧めします。次に、次のようにそのサブクラスに「flip」メソッドを実装します。

- (void)flip
{
    [UIView transitionFromView:_firstView toView:_secondView ...];
}

ビュー全体が反転している理由は、「transitionFromView」が呼び出されているビューを探し、そこでアニメーションを実行するためです。あなたの場合、それはviewcontrollerで呼び出されるので、ビュー全体が反転されます。特定のビューのみをアニメーション化する場合は、サブビューで呼び出す必要があります。

于 2012-12-17T11:18:41.050 に答える
0

別のビュー (私はコンテナーと呼んでいます) を self.view に追加し、firstView を直接 self.view に追加するのではなく、そこに追加します。2 番目のビューを追加する必要はまったくありません。トランジションがそれを行います。

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIView *container = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 250, 250)];
    firstView = [[UIView alloc] initWithFrame:CGRectMake(0,0, 250, 250)];
    secondView = [[UIView alloc] initWithFrame:CGRectMake(0,0, 250, 250)];
    firstView.backgroundColor = [UIColor redColor];
    secondView.backgroundColor = [UIColor blueColor];
    UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(0, 0, 25, 25);
    [button addTarget:self action:@selector(test:)forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    [container addSubview:firstView];
    [self.view addSubview:container];
}
于 2012-12-17T07:58:42.643 に答える