2013-03-23 97 views
0

我無法找到爲什麼我第一次移動子視圖或爲其設置動畫時,子視圖的背景縮小到子視圖的左上角。 (不知道它是否在技術上屬於'子視圖',因爲我拖到我的主視圖上的對象被標記爲'視圖')當視圖處理或動畫時,視圖背景縮小

對於本示例,我將提供一個動畫示例,以便您可以看到發生了什麼更輕鬆。

這裏是我的.h條目(2個目的,一個按鈕和一個視圖)

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

對於此示例總覽視圖位於(20,800)的尺寸的(728, 186)。我還在界面生成器中將背景設置爲淺灰色以顯示更好的結果。

該按鈕在屏幕上和屏幕之間切換視圖,通過屏幕底部滑動(通過動畫代碼)。

這裏是我的.m項(1 BOOL,1的UIColor,加上「viewDidLoad中」和「切換按鈕」的代碼)

@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點空間。如果你在視圖內部放置一個對象,它不會移動,這告訴我視圖不縮小,只有背景。在第一個「切換」按鈕後按鈕按預期運行。我添加了背景更改顏色代碼,以顯示第一個切換從不調用動畫代碼,顯然背景在第二個切換之前不會更改顏色。

+0

你知道,有一天我要編寫一種與Xcode完全不兼容的語言,叫做Xcode,只是爲了讓人們失望。在此之前,將[Xcode]標籤限制爲與IDE相關的問題,而不是與語言相關的問題。 – CodaFi 2013-03-23 16:10:21

+0

我現在明白了。它確實感到多餘。所以xcode標籤只針對有關應用程序本身的問題或疑問。 – tcison 2013-03-23 18:55:12

回答

0

我不知道發生這種事情的頻率如何,但是我可以在看到這個問題數週後回答我自己的問題。如果你看一下我描述添加視圖的頂部,我給它的尺寸(728,186)。但是我自己的動畫代碼縮小了盒子(584,145)。

至於爲什麼第一次打的切換按鈕沒有改變的背景下,這是因爲我相信我的「floatPadVisible」標誌和語法設置爲YES:

floatPadVisible:YES; 

時,實際上它不是,也是第一次通過該方法,它通過不可見的代碼運行。