APP開發小知識點

1.獲得項目中info.plist文件的內容
1> [NSBundle mainBundle].infoDictionary
2> 版本號在info.plist中的key:kCFBundleVersionKey

2.自定義控制器的view
重寫loadView方法(不需要調用[super loadView])

3.控制器view的高度和狀態欄的關係
創建控制器的view時,系統會檢測狀態欄是否顯示
* 如果有狀態欄,那麼控制器view的高度是460(iPhone5中是548)
* 如果沒有狀態欄,那麼控制器view的高度是480(iPhone5中是568)

4.[UIScreen mainScreen].applicationFrame的取值
以3.5inch爲例(320x480)
1> 沒有狀態欄,applicationFrame的值{{0, 0}, {320, 480}}
2> 有狀態欄,applicationFrame的值{{0, 20}, {320, 460}}

5.按鈕的狀態
UIControlStateNormal       普通(默認的狀態)
UIControlStateHighlighted  高亮(用戶長按的時候)
UIControlStateDisabled     失效(通過代碼控制:enabled屬性)
UIControlStateSelected     選中(通過代碼控制:selected屬性)

6.錯誤調試技巧
1> 一個控件無法顯示出來的可能原因
* 沒有寬高(寬高爲0)
* 位置不對
* hidden=YES
* 沒有被addSubview到屏幕上

2> 一個UIScrollView無法滾動
* contentSize沒有值
* 不能接收到觸摸事件

3> 一個控件無法跟用戶交互(無法接收事件)的可能原因
* (父控件的)userInteractionEnabled = NO;
* (父控件的)hidden = YES
* (父控件的)alpha <= 0.01
* (父控件的)背景是clearColor

7.按鈕的設置
// 高亮狀態下不更改圖片的顏色
self.adjustsImageWhenHighlighted = NO;
// 是否選中狀態
self.selected = YES;
// 是否可用狀態

self.enabled = YES;

一、按鈕的設置
0.設置背景圖片
[btn setBackgroundImage:image forState:UIControlStateNormal];

1.設置內部UIImageView的圖片
[btn setImage:image forState:UIControlStateNormal];
// 不能寫成btn.imageView.image = image;

2.設置內部UILabel的文字
[btn setTitle:@"43" forState:UIControlStateNormal];
// 不能寫成btn.titleLabel.text = @"43";

3.調整內部ImageView的frame
- (CGRect)imageRectForContentRect:(CGRect)contentRect

4.調整內部UILabel的frame
- (CGRect)titleRectForContentRect:(CGRect)contentRect

5.覆蓋父類在highlighted時的所有操作
- (void)setHighlighted:(BOOL)highlighted { }

6.文字居中
self.titleLabel.textAlignment = NSTextAlignmentCenter;

7.文字大小
self.titleLabel.font = [UIFont systemFontOfSize:12];

8.圖片的內容模式
self.imageView.contentMode = UIViewContentModeCenter;

二、添加子控制器
- (void)addChildViewController:
* 會將子控制器添加到childViewControllers,並且子控制器是有順序的
* 目的就是持有子控制器,不讓子控制器銷燬,保證主控制器在,子控制器就在

三、讓一個控制器擁有導航欄的最快方法:包裝一層導航控制器
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:controller];

四、UIBarButtonItem
1> 創建一個帶有文字的item
[[UIBarButtonItem alloc] initWithTitle:@"設置" style:UIBarButtonItemStyleBordered target:nil action:nil]

2> 創建一個包裝了自定義View的item
- (id)initWithCustomView:(UIView *)customView

五、設置導航欄UINavigationBar主題
// 1.appearance方法返回一個導航欄的外觀對象
// 修改了這個外觀對象,相當於修改了整個項目中的外觀
UINavigationBar *bar = [UINavigationBar appearance];

// 2.設置導航欄的背景圖片
[bar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

// 3.設置導航欄文字的主題
[bar setTitleTextAttributes:@{
  UITextAttributeTextColor : [UIColor blackColor],
  UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero]
 }];

六、設置導航按鈕UIBarButtonItem主題
// 1.修改所有UIBarButtonItem的外觀
UIBarButtonItem *barItem = [UIBarButtonItem appearance];
// 2.修改item的背景圖片
[barItem setBackgroundImage:image1 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[barItem setBackgroundImage:image2 forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
// 3.修改item上面的文字樣式
NSDictionary *dict = @{
    UITextAttributeTextColor : [UIColor darkGrayColor],
    UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero]
};
[barItem setTitleTextAttributes:dict forState:UIControlStateNormal];
[barItem setTitleTextAttributes:dict forState:UIControlStateHighlighted];

七、設置狀態欄樣式
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章