工廠方法例項化
用於簡化物件的例項化
通常與類名相同。首字母小寫
工廠方法可以傳遞引數
+(id)類名;
彈出輸入:endediting:yes
在類檔案的.h檔案中之所以對檢視是weak弱引用,是因為在nib檔案中(故事板和xib)是已經強引用了
可以用for in方法快速將檢視放入陣列中
*** iskindofclass:[*** class]
出了loadview要連線
viewdidload千萬不要忘記執行父類的方法[super viewdidload]
純**開發中uitableviewcontroller中,根檢視self.view就是self.tableview
loadview中self.view要寫成self.tableivew
在uitableviewcontroller中要例項化檢視,可以先例項化tableview
sectionforsectionindextitle:索引數值的轉換 返回的是section的索引,等於-1不做跳轉
for (uiview* textfield in self.view.subviews)
}字串 characteratindex:(nsuinteger);取出首字母
strong和weak,派生出來的用weak,對上級有依賴關係,有人管了用weak,沒人管用strong
uitableviewcell的方法在滾動的時候顯示都會執行的
所謂可重用識別符號,是用來在緩衝池查詢緩衝單元格使用的字串
不僅cell有優化,header和footer都有優化,如果僅僅是字串section則不需要
uitableviewheaderfooterview 返回的是檢視uiview,可以優化。這裡面包含了乙個contentview和cell很像,自定義檢視內容部分的**,需要解除安裝header==nil分支語句中
if分支裡面寫的是增加控制項的**,外面寫的是設定內容的**
強**父類賦值給子類時要強轉,而且程式設計師必須確認父類就是子類。
viewwithtag
[button alltargets] 所有的監聽事件
- (void)***:(id)sender forevent:(uievent *)event
nsset *set = [event alltouches];
uitouch *touch = [set anyobject];
cgpoint loaction = [touch locationinview:self.tableview];
nsindexpath *indexpath = [self.tableview indexpathforrowatpoint:location];
ios7以後boundingrectwithsize:options:context:替代sizewithfont:constrainedtosize:linebreakmode:方法
如果使用故事板或者xib的方式建立cell,那麼initwithstyle的方法不會被呼叫,用awakefromnib方法替代
取消tableview的分割線
[self.tableview setseparatorstyle:uitableviewcellseparatorstylenone];
不限制文字行數
setnumberoflines:0
設定外間距
setcontentedgeinsets:uiedgeinsetsmake(上右下左);
拉伸stretchableimagewithleftcapwidth:topcapheight
uibarbutton是以陣列的形式放入*******的
介面的內容是基於資料的,在做增刪改查的時候,先對資料處理,再做介面處理
大bug,一旦重新整理**資料,**中的標題行,會重新例項化,而不會從緩衝池中載入。解決方法,自己做乙個緩衝池(比如字典),或者註冊利用緩衝池
按鈕裡的檢視一定要設定state
自定義按鈕裡面設定等比例顯示:self.imageview setcontentmode:uiviewcontentmodescaleaspectfit;
關於商品列表的九宮格例項的一些總結:
行數 = (allcount - 1)/percount + 1;
列數 = allcount / percount;
先抽象出乙個商品類,包含名字和
在開發過程中發現,每行顯示動態的按鈕,並且按鈕和不是以按鈕的已給出的格式的需求,這時就需要抽象出按鈕類,利用title和image的rect來定製按鈕
然後又發現,每個cell包含的按鈕個數不定,這時需要抽象出cell類,通過總個數和每行個數算出numberofrowsinsection,總行數
在cell的例項方法中,其實已經把每行的按鈕加了進來,不過只是透明的而已沒有填充資料,
然後在cell方法中按照indexpath的row(行數)和每行要顯示的個數獲取對應在維護陣列中datelist擷取子陣列subarraywithrange: 起點和長度,問題來了。通過行數*每行的個數是可能大於資料長度,此時要判斷獲得真正資料長度後再去填充資料內容,為了給後面的緩衝池優化帶來的影響提供了條件 。問題來了!如果從緩衝池中取出的cell是滿按鈕的並且當前需要顯示的按鈕是不滿的話,那麼就會顯示多餘的按鈕,遺留的按鈕。此時可以通過之前的條件來隱藏多餘的按鈕。大於子陣列長度的那些按鈕隱藏,然後通過協議**方法傳給控制器完成操作
如果想取到路徑最後一部分的字串,可以使用nsstring的lastpathcomponent來獲取
xib裡的autoshrink的minimum font size可以制定最小字的尺寸以盡量小的字型顯出全部內容,lines設定成0就不換行, 解決了省略號問題
在cell中通過選中和取消選中一起用,可以讓使用者感受到選中一行的效果,也就是動畫的效果
tableview繼承自scrollview,cell是在contentsize,cell的frame相對於contentsize
loadview是懶載入
ios7中的狀態列是由控制器來控制 狀態列的方法prefersstatue....
樣式:- (uistatusbarstyle)preferredstatusbarstyle
self.propertyname 使用self. 是對屬性的訪問,會進行getter方法,懶載入。 使用_ 是對區域性變數的訪問。記憶體管理問題
- (nsarray *)data
return _data;}
button currenttitle
陣列 makeobjectsperformselector:@selector
使用者互動userinteractionenabled
scrollview哪個方向不能滾就contentsize的哪個方向設定成0
**設計模式:
1.監聽的思想:讓乙個物件a監聽另乙個物件的狀態,誰想監聽誰做**
2、通知的思想:乙個物件b狀態發生了改變(做了某些事情),想通知另乙個物件a
nstimer定時器
執行緒優先順序,[[nsrunloop currentrunloop] addtimer: formode:nsrunloopcommonmodes];
只要父控制項的userinte***ceenabled為no,子空間也不可以互動
圓角label label.layer.cornerradius = cgfloat和label,layer,maskstobounds = yes或者label.clipstobounds = yes
如果**方法是optional,那麼**可能沒有實現這個方法,所以需要先去判斷他是否實現了此方法在通知**
if([self.delegate respondstoselector:@selector(***:)]) ;
kvc字典轉模型屬性 [self setvaluesforkeywithdictionary:dict];
- initwithdict:(nsdictionary *)dict
return self; }
+***withdict:(nsdictionary *)dict
cell中最右邊加view,比如開關之類的,cell.accessoryview = [[uiswitch alloc]init];
【uicolor colorwithred: green: blue:]傳遞的是比例 xx/255.0 【蘋果規定】
活用headview和footview
array valueforkeypath:@"title",去陣列當中把每乙個元素的title屬性都拿出來返回成乙個陣列
valueforkey:@「title「 只能取直接屬性,不能取間接屬性,沒有keypath的間接功能
替換專案舊資源的時候:1、解除安裝原程式。2、product要clear,清除快取
footerview只需要設定高度
獲取nib裡的view用nib instantiatewithowner:nil options:nil].lastobject之類的
dispatch_after可以用來延遲執行方法
協議命名 規範:空間類名+delegate
**方法普遍都是optional
判斷是否有方法 if([self.delegate respondstoselector:@selector(***:))]
ios的分割線用height為1的uiview來做
純**開發一般用init來做初始化
xib一般用awakefromnib來做
xib適用於控制項個數固定的需求
自定義cell高度的時候,可以再抽取乙個資料模型出來,包括了frame和之前的資料,並且避免了cell無數次計算frame的次數,通過新的資料模型一次性計算完畢
一定要活用懶載入,精華!
iOS入門隨筆
1 ios是移動作業系統中的一種,主要應用於iphone ipad ipod等蘋果裝置。2 其他移動作業系統 android ios symbian windows phone windows10 mobile 3 應用於pc上的作業系統 os x和windows 4 ios開發步驟 1 搭建軟體介...
IOS開發隨筆2
剛剛的網路訪問 中已經包含了頁面跳轉,我們這裡再回顧下 頁面跳轉 hometabbarcontroller htbc hometabbarcontroller alloc init self presentviewcontroller htbc animated yes completion nil...
IOS 隨筆記錄
1 讓所有控制項的鍵盤隱藏 這個方法可以讓整個view取消第一響應者,從而讓所有控制項的鍵盤隱藏 self.view endediting yes 2 讓某個textfiled的取消第一響應者 讓某個textfiled的取消第一響應者 textfield resignfirstresponder 1...