1.設置生日和城市不容許鍵盤輸入設計模式
2.當開始編輯的時候調用,用一個成員屬性,記錄住當前聚焦的文本框數組
1.main 程序的入口app
2.pch 當項目中有些宏或者經常使用的東西放在pch,公司中打開一個項目先應該看的文件。ide
1、UITextField的代理方法函數
#pragma mark 當文本框開始編輯的時候調用---開始聚焦工具
- (void)textFieldDidBeginEditing:(UITextField *)textField字體
2、排序動畫
1.可變數組的排序(NSMutableArray)atom
* sortUsingComparator:方法調完,會直接改變array這個可變數組內部對象的順序spa
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {}];
* 排序過程當中會不斷地調用block,傳入兩個須要比較的對象:id obj1, id obj2
* block必須有返回值:NSComparisonResult
* NSComparisonResult有3種取值:
NSOrderedAscending = -1L, // 右邊的對象排後面
NSOrderedSame, // 同樣
NSOrderedDescending // 左邊的對象排後面
2.不可變數組的排序(NSArray)
* sortedArrayUsingComparator:方法並不會改變array數組內部的順序
* sortedArrayUsingComparator:方法會返回一個新的已經排好序的數組sortedArray
NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {}];
3、監聽鍵盤的顯示和隱藏
1.監聽鍵盤通知
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
// 1.顯示鍵盤
[center addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
// 2.隱藏鍵盤
[center addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
2.移除鍵盤通知(非ARC必須寫)
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
3.注意點:當彈出一個新的鍵盤時,纔會發出顯示鍵盤的通知
4、UI控件常見屬性總結
1.UIView
// 若是userInteractionEnabled=NO,不能跟用戶交互
@property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled;
// 控件的標記(父控件經過標記能夠找到對應的子控件)
@property(nonatomic) NSInteger tag;
// 控件的位置和尺寸(以父控件的左上角爲座標原點)
@property(nonatomic) CGRect frame;
// 控件的位置和尺寸(以控件自己的左上角爲座標原點)
@property(nonatomic) CGRect bounds;
// 控件的中點位置(以父控件的左上角爲座標原點)
@property(nonatomic) CGPoint center;
// 形變屬性:旋轉、縮放、平移
@property(nonatomic) CGAffineTransform transform;
// 父控件
@property(nonatomic,readonly) UIView *superview;
// 全部的子控件
@property(nonatomic,readonly,copy) NSArray *subviews;
2.UILabel
// 顯示的文字
@property(nonatomic,copy) NSString *text;
// 字體
@property(nonatomic,retain) UIFont *font;
// 文字顏色
@property(nonatomic,retain) UIColor *textColor;
// 文字的排列方式(左對齊、居中、右對齊)
@property(nonatomic) NSTextAlignment textAlignment;
// 設置行數(行數==0表明自動換行)
@property(nonatomic) NSInteger numberOfLines;
3.UIImageView
// 顯示的圖片
@property(nonatomic,retain) UIImage *image;
// 設置序列幀圖片數組(按順序播放animationImages數組中的圖片)
@property(nonatomic,copy) NSArray *animationImages;
// 序列幀動畫的持續時間
@property(nonatomic) NSTimeInterval animationDuration;
// 序列幀動畫的執行字數(默認是0,表明無限循環)
@property(nonatomic) NSInteger animationRepeatCount;
4.UIScrollView
// 表示UIScrollView所滾動的位置
@property(nonatomic) CGPoint contentOffset;
// 表示UIScrollView的內容尺寸(能滾動的範圍)
@property(nonatomic) CGSize contentSize;
// 增長UIScrollView額外的邊緣滾動區域
@property(nonatomic) UIEdgeInsets contentInset;
// 代理
@property(nonatomic,assign) id<UIScrollViewDelegate> delegate;
5.UITableView
6.UIPickerView
7.UIControl
// 是否可用
@property(nonatomic,getter=isEnabled) BOOL enabled;
// 自動擁有不少種狀態
// 能夠經過下面的方法來監聽控件內部的一些事件:點擊、值改變
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
1> UIDatePicker
// 設置模式(類型)
@property(nonatomic) UIDatePickerMode datePickerMode;
// 設置區域(zh_CN表明天朝)
@property(nonatomic,retain) NSLocale *locale;
// 設置當前時間
@property(nonatomic,retain) NSDate *date;
// UIDatePicker內部顯示的日期更改了,就會觸發值改變事件
2> UISwitch
// 控制開關狀態
@property(nonatomic,getter=isOn) BOOL on;
- (void)setOn:(BOOL)on animated:(BOOL)animated;
// UISwitch內部開關狀態更改了,就會觸發值改變事件
3> UISegmentControl
// 一共有多少塊區域
@property(nonatomic,readonly) NSUInteger numberOfSegments;
// 當前選中區域的位置
@property(nonatomic) NSInteger selectedSegmentIndex;
// UISegmentControl內部選中的區域更改了,就會觸發值改變事件
4> UISlider
// 設置當前的進度值
@property(nonatomic) float value;
// 設置最小的進度值
@property(nonatomic) float minimumValue;
// 設置最大的進度值
@property(nonatomic) float maximumValue;
// UISlider內部的進度值更改了,就會觸發值改變事件
5> UIButton
// 快速建立一個按鈕
+ (id)buttonWithType:(UIButtonType)buttonType;
// 設置按鈕的內邊距
@property(nonatomic) UIEdgeInsets contentEdgeInsets;
// 按鈕內部的標籤控件
@property(nonatomic,readonly,retain) UILabel *titleLabel;
// 按鈕內部的圖片控件
@property(nonatomic,readonly,retain) UIImageView *imageView;
// 設置內部titleLabel顯示的文字
- (void)setTitle:(NSString *)title forState:(UIControlState)state;
// 設置內部titleLabel的文字顏色
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;
// 設置內部imageView顯示的圖片
- (void)setImage:(UIImage *)image forState:(UIControlState)state;
// 設置背景圖片
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;
- (NSString *)titleForState:(UIControlState)state;
- (UIColor *)titleColorForState:(UIControlState)state;
- (UIImage *)imageForState:(UIControlState)state;
- (UIImage *)backgroundImageForState:(UIControlState)state;
6> UITextField(經過delegate監聽內部的事件)
8.UIAlertView
// 建立一個UIAlertView對話框
/*
title : 對話框標題
message : 對話框中間顯示的文字內容
cancelButtonTitle : 取消按鈕的文字
otherButtonTitles : 其餘按鈕的文字(設置多個)
delegate : 用來監聽alertView上面按鈕的點擊
*/
- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id /*<UIAlertViewDelegate>*/)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;
// 顯示
- (void)show;
5、項目常見文件
1.main.m
* 裏面有一個程序的入口:main函數
2.Prefix.pch文件
* pch文件中的內容 能被 項目中的其餘任何文件 共享\包含\訪問
* 若是定義的內容只用在OC環境中,就必須定義在#ifdef __OBJC__和#endif之間
3.發佈程序的時候自動去除打印語句
#ifdef DEBUG
#define MyLog(...) NSLog(__VA_ARGS__)
#else
#define MyLog(...)
#endif
4.InfoPlist.strings
* 跟app的本地化相關(多語言版本)
5.Info.plist
1> 全局配置文件
2> 新舊配置文件的對比
Xcode3的時候,全局配置文件名:Info.plist
Xcode4開始,全局配置文件名:項目名-Info.plist
3> 項目中自定義的plist文件中不要包含info這個字眼
4> 常見的配置
Bundle display name : 軟件名稱
Bundle identifier : app的惟一標識
Bundle versions string, short : 軟件版本號(更新app)
Main storyboard file base name : 設置程序一啓動就加載的storyboard文件
6、屏幕適配
1.爲非視網膜\視網膜屏幕分別準備2份圖片,好比:
1> 非視網膜 abc.png
2> 視網膜 abc@2x.png
2.程序啓動圖片
* 程序啓動過程當中會自動全屏顯示Default.png圖片,程序啓動完畢就會隱藏Default.png圖片
* Default.png 非視網膜
* Default@2x.png 3.5英寸的視網膜
* Default-568h@2x.png 4英寸的視網膜
3.軟件圖標
* 系統會自動把Icon.png當作應用程序的軟件圖標
* 關於軟件的圖標規格,能夠搜索官方文檔:app icon
7、UIApplication
1.簡介
1> 整個應用程序的象徵,一個應用程序就一個UIApplication對象,使用了單例設計模式
2> 經過[UIApplication sharedApplication]訪問這個單例對象
2.常見用法
1> 設置圖標右上角的紅色提示數字
app.applicationIconBadgeNumber = 10;
2> 設置狀態欄的樣式
app.statusBarStyle = UIStatusBarStyleBlackOpaque;
3> 控制狀態欄的顯示和隱藏
app.statusBarHidden = YES;
4> 顯示狀態欄上面的圈圈
app.networkActivityIndicatorVisible = YES;
5> 打開外部資源
* 打開網頁
[app openURL:[NSURL URLWithString:@http://www.baidu.com]];
* 打電話
[app openURL:[NSURL URLWithString:@"tel://10086"]];
* 發短信
[app openURL:[NSURL URLWithString:@"sms://10086"]];
6> 代理屬性(當應用程序發生了一些系統級別的事件,就會通知代理,交給代理去處理)
@property(nonatomic,assign) id<UIApplicationDelegate> delegate;
8、UIApplicationDelegate的代理方法
#pragma mark 程序加載完畢(啓動完畢)就會調用一次
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
#pragma mark 應用程序失去焦點的時候調用(一個app若是失去焦點,就不能跟用戶進行交互)
- (void)applicationWillResignActive:(UIApplication *)application
#pragma mark 程序進入後臺就會調用
- (void)applicationDidEnterBackground:(UIApplication *)application
#pragma mark 程序即將進入前臺的時候調用
- (void)applicationWillEnterForeground:(UIApplication *)application
#pragma mark 應用程序得到焦點的時候調用(一個app只有得到焦點以後才能跟用戶進行交互)
- (void)applicationDidBecomeActive:(UIApplication *)application
#pragma mark 程序即將被關閉的時候可能會被調用
- (void)applicationWillTerminate:(UIApplication *)application
#pragma mark 程序接收到內存警告都會調用
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application