intrinsic content size
uiview等控制項重寫intrinsiccontentsize 方法,可以增加uiview等的內間距。
同時可以不設定寬高,只設定top,left。
純**
- (cgsize)intrinsiccontentsize
複製**
xib
instrinsic size 屬性設定為 placeholder
案例uiview中新增兩個高度不確定的label。並自動適配兩個label的高度。
content hugging priority 內容高度變大的優先順序
用於兩個label其中乙個跟隨拉伸
content compression resistance 內容高度變小優先順序
用於兩個label其中乙個跟隨壓縮
layoutsubviews 呼叫時機
frame 發生變化時會呼叫
直接呼叫setlayoutsubviews
setneedslayout ()複製**
標記此處需要重新整理,但是不會立即呼叫layoutsubviews()
layoutifneeded() 複製**
如果有需要重新整理的標記,立即呼叫layoutsubviews()
如果要立即重新整理,先呼叫view.setneedslayout() ,在然後馬上呼叫layoutifneeded() 。
xib布局小技巧
設定此處可以在不同機型上使用不同的布局。
uistackview
給view新增到uistackview上,可以是的view有流布局的效果。
cell的高度計算
手動計算
手動計算所有cell內控制項的高度,相加求和。
使用self-satisfied
- (cgsize)systemlayoutsizefittingsize: (cgsize)targetsize;複製**
呼叫上面的方法,控制項可以自動計算cell的高度,但是控制項的約束要符合self-satisfied標準。
使用self-sizing , 此方法會很慢。
tableview.estimatedrowheight = 44.0
tableview.rowheight = uitableviewautomaticdimension複製**
設定圓角
離屏渲染
self.contentview.layer.maskstobounds = yes;
self.contentview.layer.cornerradius = 4; 複製**
使用uiimageview裝載乙個圓角來處理
避免離屏渲染
+ (uiimage*) imagewithcolor:(uicolor *)color 複製**
- (uiimage *)imagebyroundcornerradius:(cgfloat)radius
corners:(uirectcorner)corners
borderwidth:(cgfloat)borderwidth
bordercolor:(uicolor *)bordercolor
borderlinejoin:(cglinejoin)borderlinejoin
if (bordercolor && borderwidth < minsize / 2 && borderwidth > 0)
uiimage *image = uigraphicsgetimagefromcurrentimagecontext();
uigraphicsendimagecontext();
return image;
}複製**
設定陰影
離屏渲染
calayer *shadowlayer = [calayer layer];
shadowlayer = [uicolor blackcolor].cgcolor;
shadowlayer.shadowopacity = 1.0;
shadowlayer.shadowradius = 4.0;
shadowlayer.shadowoffset = cgsizemake(4.0, 4.0);複製**
避免離屏渲染
shadowlayer.shadowpath = cgpathcreatewithrect(shadowlayer.bound
s, null);複製**
blending 在ios中指混合顏色判斷。不透明的view疊加,系統需要對圖層進行計算。會拖慢速度。
iOS 讀書筆記 cookie
cookie是什麼東西?cookie session機制詳解這位博主寫的很詳細,可以看一下。ios 應用中可以在http連線中方便的使用cookie。url載入框架幫我們做了大量的工作以利用協議的這個特徵。經常用到cookie的地方有3個 檢索cookie的值 顯示刪除cookie 手工將cooki...
讀書筆記 iOS 類別
一,類別是一種為現有的類新增新方法的方式。二,類別的侷限性。1,無法向類中新增新的例項變數。類別沒有位置容納例項變數。2,名稱衝突,即類別中的方法與現有的方法重名。當發生名稱衝突時,類別具有更高的優先順序。你的類別名稱將完全取代初始方法,從而無法再使用初使方法。有些程式設計人員在自己的類別方法名中增...
《iOS程式設計》讀書筆記
第2章 objective c 1.訊息和方法的區別 方法是指一塊可以執行的 而訊息是指要求類或物件執行某個方法的動作 2.訊息的名稱和將要執行的方法的名稱一定是相同的 3.在oc中,方法的唯一性取決於方法名。因此,即使引數型別或返回型別不同,乙個類也不能有兩個名稱相同的方法 4.oc允許向某個值為...