知識點一:從View上截圖
知識點二:
由于url支持26個英文字母、數字和少數幾個特殊字符,因此,對于url中包含非標準url的字符時,就需要對其進行編碼。iOS中提供了函數stringByAddingPercentEscapesUsingEncoding對中文和一些特殊字符進行編碼,但是stringByAddingPercentEscapesUsingEncoding的功能并不完善,對一些較為特殊的字符無效。而對這些字符則可以使用CFURLCreateStringByteAddingPercentEscapes函數,
1NSString?*str?=[NSString?stringWithUTF8String:surl.c_str()];
2str?=@"http://218.21.213.10/MobileOA/TIFF/鄂安辦發45號關于下達2012年全市安全生產相對控制指標的通知1.jpg";
3str?=?[strstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
知識點二:
關于UIView的autoresizingMask屬性的研究
在 UIView 中有一個autoresizingMask的屬性,它對應的是一個枚舉的值(如下),屬性的意思就是自動調整子控件與父控件中間的位置,寬高。
1
2
3
4
5
6
7
8
9enum{
UIViewAutoresizingNone???????????????? = 0,
UIViewAutoresizingFlexibleLeftMargin?? = 1 << 0,
UIViewAutoresizingFlexibleWidth??????? = 1 << 1,
UIViewAutoresizingFlexibleRightMargin? = 1 << 2,
UIViewAutoresizingFlexibleTopMargin??? = 1 << 3,
UIViewAutoresizingFlexibleHeight?????? = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
UIViewAutoresizingNone就是不自動調整。
UIViewAutoresizingFlexibleLeftMargin 自動調整與superView左邊的距離,保證與superView右邊的距離不變。
UIViewAutoresizingFlexibleRightMargin 自動調整與superView的右邊距離,保證與superView左邊的距離不變。
UIViewAutoresizingFlexibleTopMargin 自動調整與superView頂部的距離,保證與superView底部的距離不變。
UIViewAutoresizingFlexibleBottomMargin 自動調整與superView底部的距離,也就是說,與superView頂部的距離不變。
UIViewAutoresizingFlexibleWidth 自動調整自己的寬度,保證與superView左邊和右邊的距離不變。
UIViewAutoresizingFlexibleHeight 自動調整自己的高度,保證與superView頂部和底部的距離不變。
UIViewAutoresizingFlexibleLeftMargin? |UIViewAutoresizingFlexibleRightMargin 自動調整與superView左邊的距離,保證與左邊的距離和右邊的距離和原來距左邊和右邊的距離的比例不變。比如原來距離為20,30,調整后的距離應 為68,102,即68/20=102/30。
其它的組合類似。
觀察著模式需要注意的事項:
4.注意事項:
使用KVO消息傳遞機制有兩個要求:(1)觀察者必須知道被觀察對象,即在同一作用域。(2)觀察者還需要知道被觀察對象的生命周期,因為在銷毀發送者對象之前,需要取消觀察者的注冊。
另外:如果計劃在Core Data對象上使用KVO,需要知道這跟一般的KVO使用方法有點不同。還必須結合Core Data的故障機制(faulting mechanism),一旦core data出現了故障,它將會觸發其屬性對應的觀察者(即使這些屬性值沒有發生改變)。
5.一些好的實踐
(1)當一個觀察者觀察多個對象的相同屬性(即不同Object,但是KeyPath相同),可通過設定靜態的Context變量來區分不同的通知。
(2)使用NSStringFromSelector(@selector(method))來獲取KeyPath,而不是直接通過NSString寫屬性名,這樣編譯器可以幫助發現屬性名中的Typo。
(3)通過方法:+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key,通過一個Key觀察多個屬性值的改變。
知識點三:
為ImageView加載圖片的時候,使用imageNamed跟使用imageWithcontentsOfFile:的區別:
imageNamed:方法適合加載比較小的圖片,因為他會把圖片放到緩存中,如果整個工程需要反復從緩存中加載這張圖片,可以使用這種方法設置圖片(因為從內存中加載圖片是最快的),所以這個方法適合于整個工程中反復使用的“小圖片”
imageWithContentsOfFIle:適用于加載大圖片,這種方式加載的圖片不會把圖片加載到緩存中。適用于使用頻率比較低的圖片(整個工程中只會加載一次的圖片)
建議:
1、小圖片可以放到Images.xcassets中;
2、大圖片建議放在Supporting File中;(因為ios7之后,放到Image.xcassets中的圖片是無法用main bundle查找到的。)