小知识

作者: 随风飘荡的小逗逼 | 来源:发表于2016-09-28 11:55 被阅读31次

    知识点一:从View上截图

    知识点二:

    NSString 中包含中文字符时转换为NSURL

    由于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查找到的。)

    相关文章

      网友评论

          本文标题:小知识

          本文链接:https://www.haomeiwen.com/subject/evgcyttx.html