2012-02-07 33 views
6

Tôi muốn giả mạo cảm giác của màn hình splash chính mờ dần bất cứ khi nào applicationDidBecomeActive được gọi, nhưng nó không hoạt động. Tôi đang làm gì sai?ios fade out màn hình splash (iphone 5 thân thiện)

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if(IS_IPHONE_5) 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]]; 
    else 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]]; 

    [self.window.rootViewController.view addSubview:splash]; 

    [UIView animateWithDuration:0.5 
        animations:^{ 
         splash.alpha = 0; 
        } 
        completion:^(BOOL finished) { 
         [splash removeFromSuperview]; 
        }]; 
} 

Sau đó, bạn cần xác định phần sau ở đâu đó. Tôi sử dụng dự án .pch nhưng bạn có thể sử dụng tiêu đề của mình nếu muốn.

#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

Trả lời

3

Nếu đó thực sự là mã của bạn, bạn có thể có lỗi đánh máy trong tên hình ảnh. (Nếu không, hãy cho chúng tôi biết ý nghĩa "không hoạt động").

Ngoài ra, màn hình giật gân thường không xuất hiện ở mỗi applicationDidBecomeActive:. didFinishLaunchingWithOptions: là thời gian bạn biết rằng bạn đã được khởi chạy và màn hình giật gân đã được hiển thị thay cho bạn.

+1

Rất tiếc, trong trình mô phỏng, hiện tượng giật gân tăng lên mỗi lần, nhưng trong thiết bị chỉ có trên tải ban đầu. tốt để biết. – Jacksonkr

2

Mã của bạn có vẻ đúng; Tôi làm điều này trong một số ứng dụng.

Tuy nhiên, bạn muốn thực hiện việc này như một phần của applicationDidFinishLaunching:options: chứ không phải trong applicationDidBecomeActive:. Nó chỉ có ý nghĩa để làm mờ màn hình giật gân khi nó được hiển thị, chỉ khi ứng dụng được khởi chạy và chưa chạy. Khi ứng dụng của bạn hoạt động, nó có thể đã ở chế độ nền - tức là đã được khởi chạy - vì vậy làm mờ màn hình giật gân trong trường hợp này không có ý nghĩa.

Hoặc, bạn có muốn màn hình splash xuất hiện luôn luôn khi nó hoạt động, ngay cả khi nó được nối lại từ nền sau từ trạng thái treo?

3

Thử thêm trực tiếp vào cửa sổ thay vì rootViewController.view.

[self.window addSubview:splash]; 

Bạn cũng có thể cần xoay hình ảnh bằng chế độ xem.transform để căn chỉnh với hình ảnh khởi động.

6

tôi thấy, từ iOS6 bạn sẽ có được một sự chuyển đổi thoải mái làm điều này

-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [UIView animateWithDuration:0.2 
          delay:0 
         options: UIViewAnimationCurveEaseIn 
        animations:^{ 
         self.window.viewForBaselineLayout.alpha = 0; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

    return YES; 
} 

sau đó ngay lập tức vào đầu

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    [UIView animateWithDuration:0.5 
          delay:0 
          options: UIViewAnimationCurveEaseOut 
         animations:^{ 
         self.window.viewForBaselineLayout.alpha = 1; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

Nó cung cấp một chéo fadeish hiệu lực thi hành từ màn hình tải đến bây giờ tải màn hình ứng dụng.

+0

ha đây là giải pháp đúng –

Các vấn đề liên quan