2

私は 1 つのアニメーションを作成していますが、その中でUIViewsubView」という名前の高さ 0 を作成する必要があります。subView にUIButtonと が含まれるようになりUIImageViewました。今、私はボタンクリックでこの方法で高さ0を作ります

@interface ViewController : UIViewController
{
    IBOutlet UIView *suvView;
    IBOutlet UIButton *subButton;
    IBOutlet UIImageView *imgview;
}
-(IBAction)hide:(id)sender;
@end


@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self.view addSubview:suvView];
    [suvView addSubview:subButton];
    [suvView addSubview:imgview];
}

-(IBAction)hide:(id)sender
{
    [UIView beginAnimations:nil context:suvView];
    [UIView setAnimationDuration:0.25];
    [suvView setFrame:CGRectMake(0, 94, 320, 0)];
    [UIView commitAnimations];
}
@end

しかし、「subButton」と「imgview」という名前のビューよりも高さを0にすると、そのままのように見えます。サブビューの高さが0のときに非表示にしたい。

私はXCode 4.5を使用しています

4

4 に答える 4

6

サイズを変更せずに非表示にする場合:[mainview setClipsToBounds:YES]

于 2012-10-15T09:30:45.623 に答える
0

これを行うには2つの方法があります:-

まず、suvViews の高さを 0 にしている場合は、削除する必要はありません。ただし、 imgview と subButton を非表示にするだけです

-(IBAction)hide:(id)sender
{
    [UIView beginAnimations:nil context:suvView];
    [UIView setAnimationDuration:0.25];
    [suvView setFrame:CGRectMake(0, 94, 320, 0)];
    [UIView commitAnimations];
    subButton.hidden = YES;
    imgview.hidden = YES;
}
@end

また、次のようなsuvViewの高さでsubButtonとimgviewの高さを減らすこともできます

-(IBAction)hide:(id)sender
{
    [UIView beginAnimations:nil context:suvView];
    [UIView setAnimationDuration:0.25];
    [suvView setFrame:CGRectMake(0, 94, 320, 0)];
    [imgview setFrame:CGRectMake(0, x, y, z];
    [subButton setFrame:CGRectMake(0, x, y, z];
    [UIView commitAnimations];
}

ここで、x、y、z は imgview と subButton の座標です。お役に立てれば。

于 2012-10-15T09:17:46.163 に答える
0

アニメーションを開始する前に、次の行を追加します。

subButton.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
imgView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

または、各サブ ビュー (ボタンとイメージ ビュー) の垂直方向と水平方向のサイズ変更を設定することで、インターフェイス ビルダーからこれを行うこともできます。

ところで、 and ではなく、Apple が推奨するブロックベースのアニメーション (iOS 4.0 以降を使用している場合) を使用する必要がbeginAnimations:ありcommitAnimations:ます。

于 2012-10-15T09:20:16.390 に答える
0
//try this code for view animation

-(IBAction)hide:(id)sender
{
[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationCurveEaseOut
                 animations:^{
    [suvView setFrame:CGRectMake(0, 94, 320, 0)];
 }
  completion:nil];
}
于 2012-10-15T09:21:15.117 に答える