0

初めてサブビューを移動またはアニメートしたときに、サブビューの背景がサブビューの左上隅に向かって縮小する理由がわかりません。(メインビューにドラッグしたオブジェクトには「ビュー」というラベルが付いているため、技術的には「サブビュー」かどうかはわかりません)

この例では、何が起こっているのかを簡単に確認できるように、アニメーションの例を提供します。

これが私の.hエントリです(2つのオブジェクト、ボタンとビュー)

@property (weak, nonatomic) IBOutlet UIView *floatPad;
- (IBAction)toggleButton:(UIButton *)sender;

この例(iPad)の場合、ビューは(20、800)にあり、サイズは(728、186)です。また、Interface Builderで背景を明るい灰色に設定して、何がうまくいっているのかを示します。

ボタンは、画面のオンとオフを切り替え、画面の下部をスライドして(アニメーションコードを介して)オンとオフを切り替えます。

これが私の.mエントリです(1つのBOOL、1つのUIColor、および「viewDidLoad」と「toggleButton」コード)

@interface ViewController ()

@property (assign, nonatomic) BOOL floatPadVisible;
@property (retain, nonatomic) UIColor* redBackground;

@end

@implementation ViewController

@synthesize floatPad;
@synthesize floatPadVisible;
@synthesize redBackground;

- (void)viewDidLoad {
floatPadVisible:YES;
    redBackground = [UIColor colorWithRed:179/255.0 green:1/255.0 blue:54/255.0 alpha:1.0];

    [super viewDidLoad];
}

- (IBAction)toggleButton:(UIButton *)sender {

if (floatPadVisible) { //is floatPadVisible BOOL set to YES
    [UIView beginAnimations:@"floatPad" context:nil];
    [UIView setAnimationDuration:1.5];
    [UIView setAnimationDelegate:self];
    [floatPad setFrame:CGRectMake(20, 1004, 584, 145)];
    [floatPad setBackgroundColor:redBackground];
    [UIView commitAnimations];
    floatPadVisible = NO;
    }
else {
    [UIView beginAnimations:@"floatPad" context:nil];
    [UIView setAnimationDuration:1.5];
    [UIView setAnimationDelegate:self];
    [floatPad setFrame:CGRectMake(20, 800, 584, 145)];
    [UIView commitAnimations];
    floatPadVisible = YES;
    }
}

問題は、最初にトグルボタンを押したときに、ビューが移動せず、背景のみが縮小することです。ビューの左側にある20ポイントのスペースを引き続き使用できるため、縮小すると言います。ビュー内にオブジェクトを配置すると、オブジェクトは移動しません。これは、ビューが縮小されておらず、背景のみが縮小されていることを示しています。最初の「トグル」の後、ボタンは期待どおりに動作します。背景変更のカラーコードを追加して、最初のトグルがアニメーションコードを呼び出さないことを示しました。これは、2番目のトグルまで背景の色が変更されないことからも明らかです。

4

1 に答える 1

0

これがどのくらいの頻度で発生するかはわかりませんが、この問題を数週間見つめた後、自分の質問に答えることができます。追加されたビューを説明する上部を見ると、寸法(728、186)が示されています。しかし、私自身のアニメーションコードは、ボックスを(584、145)に縮小します。

初めてトグルボタンを押しても背景が変わらない理由は、次の構文で「floatPadVisible」フラグをYESに設定していると信じていたためです。

floatPadVisible:YES;

実際にはそうではなく、初めてメソッドを実行したときは、表示されていないコードを実行します。

于 2013-03-26T02:08:14.543 に答える