2013-08-27 56 views
4

什麼是常規(或最佳)的方式來實現文本+圖像信息給用戶,而這個「警報/彈出」應該只出現1秒(如消息「你贏了!在有限的時間段內獎品圖片)。彈出1秒

回答

15

如果你只是想顯示的時間一點點浮動的消息,並有它消失了,只是製作一個標籤和一個簡單的動畫。這個例子將顯示消息1秒然後消逝大於0.3秒(並且假設ARC):

- (void)showMessage:(NSString*)message atPoint:(CGPoint)point { 
    const CGFloat fontSize = 24; // Or whatever. 

    UILabel* label = [[UILabel alloc] initWithFrame:CGRectZero]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.font = [UIFont fontWithName:@"Helvetica-Bold" size:fontSize]; // Or whatever. 
    label.text = message; 
    label.textColor = [UIColor blueColor]; // Or whatever. 
    [label sizeToFit]; 

    label.center = point; 

    [self addSubview:label]; 

    [UIView animateWithDuration:0.3 delay:1 options:0 animations:^{ 
     label.alpha = 0; 
    } completion:^(BOOL finished) { 
     label.hidden = YES; 
     [label removeFromSuperview]; 
    }]; 
} 

只需添加此作爲根視圖的方法。

+0

不錯的答案,將嘗試它immedeately。 (很難理解我的問題出了什麼問題 - 這是錯誤的%)) – Ilan

+0

看着密切的原因,我也不清楚。可能是因爲你用模糊的方式描述了它。而不是廣泛的,「最好的方式是什麼」,而不是「我想做X.我該怎麼做?」 –

+0

你的代碼給出了錯誤 - 因爲autorelease ...(我的項目在ARC下)... – Ilan

1

如果你不想用戶交互,那麼去HUD。

好的實現了有SVProgressHUDMBProgressHUD

他們通常都是爲了進步,但你可以將它們用於向用戶顯示信息的短暫。

作爲一個例子,這裏是你如何可以用自定義圖像一起使用SVProgressHUD輕鬆顯示1秒的消息:

[SVProgressHUD showImage:[UIImage imageNamed:@"won-image"] status:@"You Won!"]; 
+0

假設我想向用戶展示「You Won!」消息並且在返回到最後的狀態屏幕之後不久就關閉而沒有任何改變。簡單的可重用實現。 – Ilan

+0

立即添加。 –

+0

另外,'SVProgressHUD'遠不如'MBProgressHUD'可配置,因此您不能調整警報持續時間。另一方面,開箱即用更容易。 –