紙上得來(lái)終覺(jué)淺滩褥,絕知此事要躬行
本周筆記綜合課堂的學(xué)習(xí)掷酗,主要圍繞第一周作業(yè)的過(guò)程调违、遇到的問(wèn)題以及解決辦法進(jìn)行記錄。
一泻轰、需求分析
用戶(hù)需求(勉強(qiáng)算是吧)
用戶(hù)可以輸入自己的名字技肩,并在屏幕上打招呼,并可以清除消息文字練習(xí)
- storyboard的用法
- lable浮声,textfield虚婿,button,image控件的用法
- 從txt中讀取文字
- 通過(guò)代碼創(chuàng)建button
二泳挥、項(xiàng)目設(shè)計(jì)
-
簡(jiǎn)易流程圖
-
界面設(shè)計(jì)
三然痊、編碼
-
界面
-
lable
顏色字體字號(hào)居中什么的都在這里設(shè)置
-
Text Field
同樣在此處對(duì)上述屬性進(jìn)行處理
需要注意的是
Placeholder屬性
用于簡(jiǎn)單提示,用戶(hù)看一眼就能明白的不需要一直看著的一般用在此處
Clear Button屬性
用戶(hù)輸入之后右邊會(huì)有一個(gè)灰色的叉叉用于清除輸入的文字羡洁,這里就是設(shè)置這個(gè)清除按鈕什么時(shí)候出現(xiàn)的
Clear when editing begins玷过,顧名思義,是否在每次用戶(hù)輸入時(shí)都清空textfield
-
button
Type & State Config屬性
這里的Type以及State Config有多種選擇,分別對(duì)應(yīng)不同的按鈕樣式和狀態(tài)
Image & Background屬性
這里我采用將按鈕設(shè)為圖片的方法來(lái)進(jìn)行美化辛蚊,就在image處設(shè)置粤蝎,分別對(duì)Default和Highlighted狀態(tài)設(shè)置圖片達(dá)到我想要的效果
Background可以將背景設(shè)為圖片同時(shí)存在按鈕文字
大家可根據(jù)不同美化需要來(lái)選擇~
-
image
提到按鈕美化就來(lái)簡(jiǎn)單說(shuō)一下圖片吧~
直接在這里把需要的圖片拖進(jìn)來(lái)即可
AppIcon
里面是應(yīng)用程序圖標(biāo)設(shè)置,在需要的地方分別拖一張合適的圖片進(jìn)去就可以了
我對(duì)圖片處理不是很在行又不想直接用老師的圖片袋马,所以這里就沒(méi)做啦_(:зゝ∠)_
- 內(nèi)部實(shí)現(xiàn)
上面提到的部分都是直接在storyboard中和ViewController.m直接聯(lián)系起來(lái)的初澎,下面是直接通過(guò)代碼實(shí)現(xiàn)的部分,即從txt中讀取文字以及在打招呼按鈕響應(yīng)代碼里創(chuàng)建清除消息文字按鈕
- 過(guò)程中已解決的問(wèn)題(具體解決方法去代碼里找啦虑凛!都注釋出來(lái)了)
- 讀取的txt文件要添加到工程里碑宴,否則url取不到
- 如何將txt中內(nèi)容讀取到數(shù)組中
- 如何取隨機(jī)數(shù)
arc4random_uniform
- 如何用代碼創(chuàng)建button并響應(yīng)
- 如何防止重復(fù)創(chuàng)建,這里我使用的是BOOL類(lèi)型的實(shí)例變量(也許這里也可以通過(guò)tag控制桑谍?)延柠,大家還有什么好方法也可以交流一下
- 創(chuàng)建時(shí)不能忘記
setTitleColor
,居然默認(rèn)是白色_(:зゝ∠)_ - 設(shè)置屬性時(shí)一定要加上
forState:
锣披,button是有好多種狀態(tài)的 - button的顯示與隱藏
- 通過(guò)tag訪問(wèn)button
- button創(chuàng)建后要設(shè)置顯示
- 未解決問(wèn)題
- 如何收回鍵盤(pán)贞间,如何取消textfield焦點(diǎn)
- 單元測(cè)試忘記啦!_(:зゝ∠)_
3. 以下就是主要代碼啦~
/* 打招呼 */
- (IBAction)greeting:(id)sender {
/* 獲取greeting.txt路徑 */
NSURL* url = [[NSBundle mainBundle] URLForResource:@"greeting"
withExtension:@"txt"];
/* 讀取文件雹仿,utf-8編碼增热,放入NSArray中 */
NSString* txtString =
[NSString stringWithContentsOfURL:url
encoding:NSUTF8StringEncoding
error:nil];
NSArray* greetingArray = [txtString componentsSeparatedByString:@"\n"];
NSInteger idx = arc4random_uniform((u_int32_t)greetingArray.count);
NSString* greetingString = greetingArray[idx];
/* 界面顯示 */
if (self.nameField.text.length > 0) {
self.messageLable.text = [NSString stringWithFormat:@"%@: %@",
self.nameField.text,
greetingString];
}
/* 創(chuàng)建清除按鈕,已創(chuàng)建時(shí)顯示或隱藏 */
if (![self.messageLable.text isEqualToString:@"哎呀喵小扣摔倒了_(:зゝ∠)_"]) {
if (!_clearButtonExist) {
[self createButton];
}
else {
UIButton* button = [self.view viewWithTag:999];
button.hidden = NO;
}
}
}
/* 創(chuàng)建按鈕 */
- (void)createButton {
UIButton* clearButton = [[UIButton alloc] init];
clearButton.tag = 999;
clearButton.frame = CGRectMake(120, 128, 80, 30);
[clearButton setTitle:@"不理她了" forState:UIControlStateNormal];
[clearButton setTitleColor:[UIColor blueColor]
forState:UIControlStateNormal];
/* 響應(yīng) */
[clearButton addTarget:self
action:@selector(clearMessage:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:clearButton];
_clearButtonExist = YES;
}
/* 清除消息文字胧辽,同時(shí)隱藏清除按鈕 */
- (IBAction)clearMessage:(id)sender {
self.messageLable.text = @"哎呀喵小扣摔倒了_(:зゝ∠)_";
UIButton* button = [self.view viewWithTag:999];
button.hidden = YES;
}