1、必須熟練掌握Objective-C語言,熟悉OC中各種常用語法,蘋果自帶框架以及第三方框架的知識,基礎UI控件的運用;
成都創新互聯公司:成立與2013年為各行業開拓出企業自己的“網站建設”服務,為上千家公司企業提供了專業的成都網站設計、成都做網站、網頁設計和網站推廣服務, 按需定制制作由設計師親自精心設計,設計的效果完全按照客戶的要求,并適當的提出合理的建議,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據客戶的實際情況給出合理的網站構架,制作客戶同行業具有領先地位的。
2、了解iOS操作系統,能夠編寫出穩定性強,擴展性高的代碼,熟知數據庫的操作方法和Xcode的使用;
3、掌握開發工具的使用,如VB、powerbuilder這類的可視化開發工具、C/C++和JAVA等開發工具。
總結:
1、必須熟練掌握Objective-C語言,熟悉OC中各種常用語法;
2、了解iOS操作系統,能夠編寫出穩定性強,擴展性高的代碼,熟知數據庫的操作方法和Xcode的使用;
3、掌握開發工具的使用,如VB、powerbuilder這類的可視化開發工具、C/C++和JAVA等開發工具。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:0731-84117792E-MAIL:11247931@qq.com
為了更好理解使用用tabbar和切換視圖,我們創建一個Empty Application。
1、 打開Xcode ,新建項目
2、 創建View Controller
在項目上按花鍵+N創建新文件,創建 Objective-C class 文件,按Next按鈕,subClass 選UIViewController 。勾選上xib選項
以同樣方式創建另外三個ViewController ,RedViewController ,GreyViewController,YellowViewController。四個View準備好了。那么Tabbar呢?
3、 創建TabBarController.xib文件,選擇創建Empty文件
這時候你發現創建的xib文件是空白的,不用慌,去右下角控件欄中把TabBar Controller拖過來就Ok了。
4、 關聯TabBarController.xib ,tabbarAppDelegate這兩個文件
在上圖中選擇File’s Owner,打開Identity Inspector,在Class一欄選擇tabbarAppDelegate
這樣,我們就可以創建TabBarController.xib 文件指向tabbarAppDelegate 文件的Outlet映射了。
5、 在Xcode中的工具欄的View菜單找到 打開Assistant Editor,使tabbarAppDelegate.h和TabBarController.xib 同時打開。
在xib文件上按住control鍵,往tabbarAppDelegate.h,創建Outlet.
彈出窗口輸入 rootController,點connect。
6、 添加代碼
打開tabbarAppDelegate.m,在didFinishLaunchingWithOptions方法中添加代碼:
1.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
3. // Override point for customization after application launch.
4. [[NSBundle mainBundle] loadNibNamed:@"TabBarController" owner:self options:nil];
5. [self.window addSubview:self.rootController.view];
6. self.window.backgroundColor = [UIColor whiteColor];
7. [self.window makeKeyAndVisible];
8. return YES;
7、 往TabBarController.xib上添加Tab Bar Item,
把控件欄上的Tab Bar Item控件往TabBarController.xib上拖拽即可,一個放4個。
8 、關聯Tab Bar Item和***ViewController。
選擇其中一個Tab Bar Item,在右上角打開Identity Inspector,在Class中選擇BlueViewController:
然后,打開Attribute,在NIB Name選擇BlueViewController:
其他3個tab item重復類似的操作,選中對應的ViewController,這樣在切換Tab標簽時,就可以切換到對應的頁面。
9、 設置tab item的屬性
選中其中一個tab item ,會在右上角的屬性欄里看到如下信息
Badge是紅色圈圈里面有數字 ,表示有多少條信息的屬性
Identifier 是tab item的樣式,選custom是自定義,下面的是系統的樣式。我選了其中四種。
bar ITem 的title image在custom的樣式下能設置。
10 、剩下的3個Tab Item也做類似的設置即可。
現在基本完工,運行看看結果如何。好吧,其實和第一第二個圖是一樣的`,這里就不放了。
11 、在viewDidLoad方法加Log觀察切換View
可以加寫日志看看對應的View是什么時候運行的。第一個運行的View是BlueViewController,點擊其他的tab項時,加載其他的view,加載一次之后下次點擊不再調用viewDidLoad。
1.- (void)viewDidLoad
2. [super viewDidLoad];
3. NSLog(@"BlueViewController");
4. // Do any additional setup after loading the view from its nib.
一、簡單說明
一般情況下,點擊某個控件后,會做出相應反應的都是按鈕
按鈕的功能比較多,既能顯示文字,又能顯示圖片,還能隨時調整內部圖片和文字的位置
二、按鈕的三種狀態
normal(普通狀態)
默認情況(Default)
對應的枚舉常量:UIControlStateNormal
highlighted(高亮狀態)
按鈕被按下去的時候(手指還未松開)
對應的枚舉常量:UIControlStateHighlighted
disabled(失效狀態,不可用狀態)
如果enabled屬性為NO,就是處于disable狀態,代表按鈕不可以被點擊
對應的枚舉常量:UIControlStateDisabled
三、注意點
(1)從Xcode5開始,圖片資源都放到Images.xcassets中進行管理,可以使用拖拽的方式添加項目中用到的圖片到Images.xcassets中
(2)若干多個控件共用一段代碼,通常使用tag。
四、代碼示例
(1)
復制代碼 代碼如下:
#import "LFViewController.h"
@interface LFViewController ()
@property (weak, nonatomic) IBOutlet UIButton *headImageView;
@end
@implementation LFViewController
// 在OC中,絕大多數的控件的監聽方法的第一個參數就是控件本身
//- (IBAction)left:(UIButton *)button {
//
// NSLog(@"----");
//}
- (IBAction)move
{
// 通過frame修改head的位置
// 在OC中,不允許直接修改“對象”的“結構體屬性”的“成員”
// 允許修改“對象”的'“結構體屬性”
// 1. 取出結構體屬性
CGRect rect = self.headImageView.frame;
// 2. 修改結構體成員
rect.origin.y -= 20;
// 3. 設置對象的結構體屬性
self.headImageView.frame = rect;
}
(2)
復制代碼 代碼如下:
#import "LFViewController.h"
使用git
1. 創建項目時,勾選git
2. 開發告一段落后,選擇"Source Control""Commit",并編寫注釋
// 枚舉類型實質上就是一個整數,作用就是用來替代魔法數字
// 枚舉類型中,指定了第一個整數之后,后面的數字會遞增
typedef enum
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight,
} kMovingDir;
#define kMovingDelta 50
@interface LFViewController ()
@property (weak, nonatomic) IBOutlet UIButton *headImageView;
@end
@implementation LFViewController
- (IBAction)move:(UIButton *)button
// CGRect rect = self.headImageView.frame;
CGPoint p = self.headImageView.center;
// magic number魔法數字,其他程序員看到代碼的時候,不知道是什么意思
switch (button.tag) {
case kMovingDirTop:
p.y -= kMovingDelta;
break;
case kMovingDirBottom:
p.y += kMovingDelta;
break;
case kMovingDirLeft:
p.x -= kMovingDelta;
break;
case kMovingDirRight:
p.x += kMovingDelta;
break;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
self.headImageView.center = p;
[UIView commitAnimations];
- (IBAction)zoom:(UIButton *)button
CGRect rect = self.headImageView.bounds;
// 在C語言中,關于bool的判斷:非零即真
if (button.tag) {
rect.size.width += 50;
rect.size.height += 50;
rect.size.width -= 50;
rect.size.height -= 50;
// 首尾動畫
// beginAnimations表示此后的代碼要“參與到”動畫中
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
self.headImageView.bounds = rect;
// self.headImageView.alpha = 0;
// commitAnimations,將beginAnimation之后的所有動畫提交并生成動畫
[UIView commitAnimations];
@end
五、補充筆記
1. IBAction的參數
- (IBAction)left:(UIButton *)button
(1) 在OC中,絕大多數的控件監聽方法的第一個參數就是控件本身
(2) 默認連線時的參數類型是id
(3) 如果要在監聽方法中,方便控件的使用,可以在連線時或者連線后,修改監聽方法的參數類型
2. 修改對象的結構體成員
在OC中,不允許直接修改“對象”的“結構體屬性”的“成員”,但是允許修改“對象”的“結構體屬性”
修改結構體屬性的成員方法如下:
(1)使用臨時變量記錄對象的結構體屬性
(2) 修改臨時變量的屬性
(3)將臨時變量重新設置給對象的結構體屬性
3. 在程序開發中需要避免出現魔法數字(Magic Number)
使用枚舉類型,可以避免在程序中出現魔法數字
(1)枚舉類型實質上就是一個整數,其作用就是用來替代魔法數字
(2)枚舉類型中,指定了第一個整數之后,后面的數字會遞增
4. frame bounds center
1 frame可以修改對象的位置和尺寸
2 bounds可以修改對象的尺寸
3 center可以修改對象的位置
5. 首尾式動畫
復制代碼 代碼如下:
// beginAnimations表示此后的代碼要“參與到”動畫中
[UIView beginAnimations:nil context:nil];
// setAnimationDuration用來指定動畫持續時間
[UIView setAnimationDuration:2.0];
self.headImageView.bounds = rect;
......
// commitAnimations,將beginAnimation之后的所有動畫提交并生成動畫
[UIView commitAnimations];
下面來羅列一下UIButton的基本屬性羅列
第一、UIButton的定義
復制代碼 代碼如下:
UIButton *button=[[UIButton buttonWithType:(UIButtonType);
能夠定義的button類型有以下6種,
復制代碼 代碼如下:
typedef enum {
UIButtonTypeCustom = 0, 自定義風格
UIButtonTypeRoundedRect, 圓角矩形
UIButtonTypeDetailDisclosure, 藍色小箭頭按鈕,主要做詳細說明用
UIButtonTypeInfoLight, 亮色感嘆號
UIButtonTypeInfoDark, 暗色感嘆號
UIButtonTypeContactAdd, 十字加號按鈕
}UIButtonType;
第二、設置frame
復制代碼 代碼如下:
button1.frame = CGRectMake(20, 20, 280, 40);
[button setFrame:CGRectMake(20,20,50,50)];
第三、button背景色
復制代碼 代碼如下:
button1.backgroundColor = [UIColor clearColor];
[button setBackgroundColor:[UIColor blueColor]];
第四、state狀態
forState: 這個參數的作用是定義按鈕的文字或圖片在何種狀態下才會顯現
復制代碼 代碼如下:
enum {
UIControlStateNormal = 0, 常規狀態顯現
UIControlStateHighlighted = 1 0, 高亮狀態顯現
UIControlStateDisabled = 1 1, 禁用的狀態才會顯現
UIControlStateSelected = 1 2, 選中狀態
UIControlStateApplication = 0x00FF0000, 當應用程序標志時
UIControlStateReserved = 0xFF000000 為內部框架預留,可以不管他
@property(nonatomic,getter=isEnabled)BOOL enabled; // default is YES. if NO, ignores touch events and subclasses may draw differently
@property(nonatomic,getter=isSelected)BOOL selected; // default is NO may be used by some subclasses or by application
@property(nonatomic,getter=isHighlighted)BOOL highlighted;
第五 、設置button填充圖片和背景圖片
復制代碼 代碼如下:
[buttonsetImage:[UIImageimageNamed:@"checkmarkControllerIcon"]forState:UIControlStateNormal];
[buttonsetBackgroundImage:[UIImageimageNamed:@"checkmarkControllerIcon"]forState:UIControlStateNormal];
第六、設置button標題和標題顏色
復制代碼 代碼如下:
[button1 setTitle:@"點擊" forState:UIControlStateNormal];
[buttonsetTitleColor:[UIColorredColor]forState:UIControlStateNormal];
第七、設置按鈕按下會發光
復制代碼 代碼如下:
button.showsTouchWhenHighlighted=NO;
第八、添加或刪除事件處理
復制代碼 代碼如下:
[button1 addTarget:self action:@selector(butClick:) forControlEvents:UIControlEventTouchUpInside];
[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];
第九、 設置按鈕內部圖片間距和標題間距
復制代碼 代碼如下:
UIEdgeInsets insets; // 設置按鈕內部圖片間距
insets.top = insets.bottom = insets.right = insets.left = 10;
bt.contentEdgeInsets = insets;
bt.titleEdgeInsets = insets; // 標題間距
第一步:編程入門課
時間預計:4個星期
推薦看公開課,Udacity也行,網易公開課也行,自己找一個面對對象語言(一般是JAVA, C++, Python)的課。我是在網易公開課看的斯坦福的CS106A,學的JAVA。
如果你純粹學iOS開發,不推薦看哈佛CS50,CS50是給CS系的學生介紹整個計算機世界的框架,講的內容比較多,進度比較快,對iOS開發其實有點累贅了。(臣妾有點跟不上啊!!)
計劃安排是一天一課,看課程要求的書(至少看完一本)及大部分作業。這一階段重點不是語法,而是以下3個目標。
目標:
1. 讓自己對編程這件事感到適應。
寫hello world。
怎么寫function, 怎么調用function。
全局變量,局部變量這類基本知識點。
都是基本的東西。看看書,寫多兩個程序就歐啦。
2. 掌握編程語言的基本要素。
編程語言4個要素:
a. 基本的數據類型:整數,實數,character, string, boolean
b. 基本的運算符號:+-×/++--那啥的
c. 怎樣輸入輸出
d. 怎樣控制程序:sequence,selection,loop
3. 了解編程范式
面對過程編程。
面向對象編程。
第二步:上手iOS!
時間預計:2星期
強烈推薦CS193P,老頭子講的超級好!我的很多東西(對象思維啥的)是在這里跟著做練習的時候才真正明白的(好啦,也可能是上一堂課練習做得少的原因)。如果等到9月應該itunes U上會開始教iOS 7了。網易公開課的是2010年iOS 5版的,前10堂課,也行。(iTunes U上有完整的課)
CS193P說有prerequisite,一開始被嚇到,事實證明還是可以學下去的。頭兩節課一頭霧水,沒關系,把itunes U上的課件下載下來,把所有代碼打出來,然后一個個元素對應之前學的語言匹配,再不懂先放著,繼續學后邊的,過幾天打多點代碼就懂了。
感覺學5、6堂課,一個星期左右就可以開始進入下一階段自己做東西了。之后用啥學啥,每堂課都有主題的。速度慢點的同學們,這階段跟我一樣準備兩個星期吧!
第三步:開發app!
時間預計:2星期(本人...1個半月,實在不好意思說出口)
這個時間就可長可短啦,還包括美工,交互啥的。堅持要用啥學啥的原則,其實就是知道iOS SDK都有什么組件,每個組件有什么function而已。stackoverflow, Github, apple sample code多上,搜索引擎多用。如果有個師傅,這個階段真的是進步神速。
好的!不出意外,你的第一個app就這么新鮮出爐了!從今天開始,成為一個冷艷逼格高尚的iOS開發者吧!
為了實現自定義cell按鈕選擇問題,花了幾個小時,在此記錄分享一下:
平時iOS開發中,經常遇到自定義cell問題,tableView使用cell時候由于cell是復用的,所以cell中的按鈕等控件也會被復用,不能直接在cell中self.方式引用控件來判斷對應的控件唯一性,由于tableView刷新或者重用會導致使用混亂問題,cell中使用的控件不是唯一的!!!只有在控制器中進行引用和判斷才是唯一的!!!
效果圖:
如圖自定義cell會重用按鈕:
流程如下:
1.自定義cell布局按鈕設置選擇狀態圖片:
2.設置cell大小按鈕,并設置按鈕的點擊事件傳遞tag,通過代理傳值給控制器
3.第三個數據源方法將indexPath.row的值賦值給cell的按鈕的tag
4.模型添加屬性記錄按鈕選擇狀態
5.自定義代理方法通過tag找到對應模型,模型選擇屬性取反
6.根據是否為選擇的cell設置模型的選擇屬性
7.獲取對應數據
我已經很盡力把每步都寫的夠詳細,不好之處,還望海涵.??
用于顯示文本,文本是對一些東西的說明。標簽繼承于UIView。
//1.創建(在系統中存在alloc)
UILabel*label = [[UILabel alloc] init];
//2.美化(設計位置大小背景顏色顯示文本等等)
/*
frame設置位置和大小。位置(x,y)大小(weight,hight)。
frame{x,y,weight,hight} 結構體struct
frame包括origin/size:origin{x,y}size{weight,hight}
frame是CGRect類型(結構體,包括CGPoint類型的origin和CGSize類型的size),origin包括CGFloat類型的x和y ;size包括CGFloat類型的size和height。
CGRectMake(#CGFloat x#, #CGFloat y#,#CGFloat width#, #CGFloat height#);設置大小和位置。
*/
label.frame=CGRectMake(0, 0, 100, 100);
//設置背景顏色
label.backgroundColor=[UIColor yellowColor];
//text屬性設置標簽的文本
label.text=@"標簽控件";
//textAlignment設置文本對齊方式枚舉類型
//NSTextAlignmentCenter居中對齊
//NSTextAlignmentRight居右
//NSTextAlignmentLeft居左
label.textAlignment=NSTextAlignmentCenter;
//textColor設置文本顏色
label.textColor= [UIColor blackColor];
//font設置字體大小默認字體大小是17
label.font=[UIFont systemFontOfSize:14];
//numberOfLines設置多行顯示當設置為0時自動分行
label.numberOfLines= 0;
//shadowOffset設置陰影
//第一個數值為正則向右偏移否則向左偏移
//第二個數值為正則向下偏移否則向上偏移
label.shadowOffset=CGSizeMake(-2, -2);
//shadowColor設置陰影顏色
label.shadowColor= [UIColor redColor];
//3.添加(把控件貼到需要顯示的地方)
//addSubview添加子視圖這里讓標簽添加到窗口上
//這里self.view叫做label的父視圖
[self.view addSubview:label];
用于控制行為的發生或者屬性的改變
//1.創建
//創建對象分配內存并初始化
UIButton*button=[[UIButton alloc] init];
//2.美化
button.frame=CGRectMake(100, 100, 100, 40);
//設置背景顏色
button.backgroundColor= [UIColor blueColor];
//設置按鈕的標題不能通過屬性設置
//第一個參數setTitle是按鈕的標題字符串
//第二個參數forState是設定這個標題所處的狀態枚舉類型
//UIControlStateNormal通常狀態
//UIControlStateHighLighted高亮狀態
//UIControlStateDisabled不可使用的狀態
//UIControlStateSelectwd選擇下的狀態
[buttonsetTitle:@"開始" forState:UIControlStateNormal];
[buttonsetTitle:@"關閉" forState:UIControlStateHighlighted];
//UIImage圖片類工具類繼承于NSObject
UIImage*image = [UIImage imageNamed:@"1.png"];
//設置按鈕圖片(根據自身大小進行添加)
//第一個參數setImage設置的圖片UIImage類型
//第二個參數forState是設置圖片這個圖片的狀態枚舉類型
//[button setImage:image forState:UIControlStateNormal];
//設置一般狀態下的圖片之后點擊圖片變暗設置高亮狀態下的圖片就可以消除這個bug
//[button setImage:image forState:UIControlStateHighlighted];
//設置按鈕的背景圖片(適應大小,自動拉伸)
[button setBackgroundImage:imageforState:UIControlStateNormal];
[button setBackgroundImage:imageforState:UIControlStateHighlighted];
//按鈕綁定方法
//第一個參數addTarget添加目標,點擊按鈕之后誰去執行按鈕的方法self自己執行
//第二個參數action行為方法,按鈕綁定的方法
//第三個參數forControlEvents控制事件,按鈕在什么條件下去觸發綁定的方法枚舉//UIControlEventTouchUpInside單擊
//這里給按鈕綁定方法括號中相當于聲明了方法。但是這個方法需要在這個類中實現,否則運行點擊按鈕會崩潰
[button addTarget:selfaction:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
//邊框寬度.通過設置layer打點可以對控件進行切邊,但是兩個屬性要同時使用才有效果
Button.layer.borderWidth= 1.0;
//邊框顏色
Button.layer.borderColor= [UIColor colorWithRed:197 /255.0green:197 / 255.0blue:197 / 255.0alpha:1].CGColor;
Button.layer.borderColor= (__bridgeCGColorRef_Nullable)([UIColor colorWithRed:197 /255.0green:197 / 255.0blue:197 / 255.0alpha:1]);
//3.添加
//添加到窗口addSubview上添加子視圖
[self.view addSubview:button];
用于輸入文本內容
//1.創建內存分配內存并且初始化
UITextField *textfield =[[UITextField alloc] init];
//2.美化
//設置位置和大小
textfield.frame=CGRectMake(100, 100, 100, 40);
//設置背景顏色
textfield.backgroundColor= [UIColor redColor];
//borderStyle設置邊框類型枚舉類型
//UITextBorderStyleRoundedRect圓角矩形
//UITextBorderStyleline線性
//UITextBorderStyleBezel刃型
textfield.borderStyle=UITextBorderStyleRoundedRect;
//placeholder設置提示語
textfield.placeholder=@"請輸入密碼..";
//設置安全輸入。布爾類型設置YES;輸入內容會變為小黑點
// ???textfield.secureTextEntry = YES;
//設置輸入框的文本(獲取輸入框的文本也是這個屬性)
textfield.text=@"123";
//設置清除按鈕的樣式枚舉樣式
//UITextFieldViewModeWhileEditing當編輯時候存在(光標一定在輸入框中的)//UITextFieldViewModeUnlessEditing除了編輯的時候(只要輸入框中有內容)//UITextFieldViewModeAlways總是存在
textfield.clearButtonMode=UITextFieldViewModeWhileEditing;
//是否糾錯,輸入時會提示正確的內容
textField.autocorrectionType=UITextAutocorrectionTypeNo;
//設置return鍵的樣式枚舉類型
textfield.returnKeyType=UIReturnKeySend;
//設置鍵盤的樣式
//UIKeyboardTypeNumberPad純數字鍵盤
textfield.keyboardType=UIKeyboardTypeNumberPad;
//enabled設置輸入框不可使用
textfield.enabled=YES;
//設置每次開始編輯時清除原輸入框的內容
textfield.clearsOnBeginEditing=YES;
//鍵盤下去3種方法(失去第一響應者。輸入框綁定方法。touchesBegan。)
//3.添加到窗口上
[self.view addSubview:textfield];
圖片視圖
//UIImageView專門用來顯示圖片的圖片視圖,繼承于uiview.
//1.創建
UIImageView *imageView = [[UIImageView alloc] initWithFrame:[[UIScreenmain Screen] bounds]];
//2.美化
//設置位置和大小
//imageView.frame = CGRectMake(40, 80, 200, 300);
//設置圖片
//創建一張圖片用于視圖圖片的顯示
UIImage *image = [UIImage imageNamed:@"6.png"];
//image圖片視圖的屬性用于設置圖片
imageView.image= image;
//userInteractionEnabled 設置用戶交互性
imageView.userInteractionEnabled=YES;
//3.添加
[self.view addSubview:imageView];