1. iOS7之后所有的控制器的view都是370*480(點坐標系)的,導航欄高度是64點。
2. 導航欄蓋在tableview控制器上,消息提醒控件從導航欄后從上慢慢往下移動,全部出現之后停留1秒,然后繼續慢慢往上移動完全消失為止(1個提醒控件的高度值)。
3. 消息控件是半透明的,所以組成內容是背景顯示圖片和label構成,文字是不透明的。
4. 圖片變成顏色的方法,適合平鋪的場合,方法是 colorWithPatternImage:?
5. 開發使用輕量級的控件較好。
6. 添加tableview上是錯誤的,會跟著走,放在window上也是不對,添加到導航控制器上是對的。[self.navigationController.view addSubview:label];
7. [self.navigationController.view insertSubview:label belowSubview:self.navigationController.navigationBar]; // 蓋在導航欄下邊
8. 動畫,y值 += h高度。
9. UIViewAnimationOptionCurveLinear (線性)勻速動畫,EaseIn 慢慢進入,EaseOut 慢慢退出, EaseInOut 開頭和結尾動畫比較慢,其他時間快。
10. label.transform = CGAffineTransformMakeTranslation(0, label.height); //往下走一個高度, 往上走就清空就可以:label.transform = CGAffineTransformIdentity; //回來原來的樣子,很簡單的一句代碼。
開發代碼:
/**
*? 顯示最新微博的數量
*
*? @param count 最新微博的數量
*/
- (void)showNewStatusCount:(int)count
{
// 1.創建label
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"timeline_new_status_background"]];
label.width = [UIScreen mainScreen].bounds.size.width;
label.height = 35;
// 2.設置其他屬性
if (count == 0) {
label.text = @"沒有新的微博數據,稍后再試";
} else {
label.text = [NSString stringWithFormat:@"共有%d條新的微博數據", count];
}
label.textColor = [UIColor whiteColor];
label.textAlignment = NSTextAlignmentCenter;
label.font = [UIFont systemFontOfSize:16];
// 3.添加
label.y = 64 - label.height;
// 將label添加到導航控制器的view中,并且是蓋在導航欄下邊
[self.navigationController.view insertSubview:label belowSubview:self.navigationController.navigationBar];
// 4.動畫
// 先利用1s的時間,讓label往下移動一段距離
CGFloat duration = 1.0; // 動畫的時間
[UIView animateWithDuration:duration animations:^{
//? ? ? ? label.y += label.height;
label.transform = CGAffineTransformMakeTranslation(0, label.height);
} completion:^(BOOL finished) {
// 延遲1s后,再利用1s的時間,讓label往上移動一段距離(回到一開始的狀態)
CGFloat delay = 1.0; // 延遲1s
// UIViewAnimationOptionCurveLinear:勻速
[UIView animateWithDuration:duration delay:delay options:UIViewAnimationOptionCurveLinear animations:^{
//? ? ? ? ? ? label.y -= label.height;
label.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished) {
[label removeFromSuperview];
}];
}];
// 如果某個動畫執行完畢后,又要回到動畫執行前的狀態,建議使用transform來做動畫
}