YYKit三方库常用方法,方便自己也方便别人

以下是本人在浏览YYKit框架时感觉可以用到的方法:

NSArray

//随机在数组里去一个元素,传空数组返回nil
- (nullable id)randomObject;

//通过下标选取元素,下标越界也不会崩溃,下标越界返回nil
- (nullable id)objectOrNilAtIndex:(NSUInteger)index;

//将 NSString/NSNumber/NSDictionary/NSArray 转为
json字符串,不进行系列化(不删除空格和回车)
- (nullable NSString *)jsonStringEncoded;

//将数据进行序列化json格式转换,删除空格回车等
- (nullable NSString *)jsonPrettyStringEncoded;

NSMutableArray

//删除数组第一个元素,并把被删除的元素返回
- (nullable id)popFirstObject;

//删除数组最后一个元素,并把被删除的元素返回
- (nullable id)popLastObject;

//增加一个非空类型,如果为空会报错
- (void)appendObject:(id)anObject;

//插入一个非空类型 到数组的首位
- (void)prependObject:(id)anObject;

//增加元素为另一个数组的全部元素,数组为空,方法不执行
- (void)appendObjects:(NSArray *)objects;

//将要增加的数组元素放到首位,数组为空,方法不执行
- (void)prependObjects:(NSArray *)objects;

//将数组元素添加到指定位置
- (void)insertObjects:(NSArray *)objects atIndex:(NSUInteger)index;

//将数组元素倒序输出
- (void)reverse;

//将数组元素随机排列
- (void)shuffle;

NSDictionary

//将字典键排序,升序排序
- (NSArray *)allKeysSorted;

//values根据键升序排序
- (NSArray *)allValuesSortedByKeys;

//判断键在字典中是否有值,键为空返回NO,有键对应的值返回YES
- (BOOL)containsObjectForKey:(id)key;

//根据数组元素返回相应的键值新字典,如果键对应值为空则为nil
- (NSDictionary *)entriesForKeys:(NSArray *)keys;

//将xml语句返回为字典,键值对是怎么弄得,没看懂
+ (nullable NSDictionary *)dictionaryWithXML:(id)xmlDataOrString;

//根据键删除值,并把值返回
- (nullable id)popObjectForKey:(id)aKey;

//根据字典元素删除字典元素,并把被删除的值以字典返回
- (NSDictionary *)popEntriesForKeys:(NSArray *)keys;

NSString

//将字符串以base64编码
- (nullable NSString *)base64EncodedString;

//将base64编码字符串转为utf8编码字符串
+ (nullable NSString *)stringWithBase64EncodedString:(NSString *)base64EncodedString;

//根据字体字号大小,设置的宽高,换行模式,返回重写的宽高
- (CGSize)sizeForFont:(UIFont *)font size:(CGSize)size mode:(NSLineBreakMode)lineBreakMode;

//传入字号大小,默认宽高字体最大,返回字体的宽
- (CGFloat)widthForFont:(UIFont *)font;

//传入字号大小,给定宽度,不换行,返回字体高度
- (CGFloat)heightForFont:(UIFont *)font width:(CGFloat)width;

//删除字符串中的空格和换行
- (NSString *)stringByTrim;

将字符串转化成xxx@(scale)x;例:@"name" to @"name@2x" 在末尾追加
- (NSString *)stringByAppendingNameScale:(CGFloat)scale;

//判断字符串中是否有空格
- (BOOL)isNotBlank;

//将字符串转化为number类型
- (nullable NSNumber *)numberValue;

//将字符串转化为data类型
- (nullable NSData *)dataValue;

//返回一个range 0到字符串长度
- (NSRange)rangeOfAll;  

//将json字符串,转成字典@"{"name":"a","count":2}"  => NSDictionary: @[@"name":@"a",@"count":@2]
- (nullable id)jsonValueDecoded;

NSAttributedString

//将数据归档成data数据
- (nullable NSData *)archiveToData;

//将data数据解档为字符串
+ (nullable instancetype)unarchiveFromData:(NSData *)data;

//给定范围的字体,设置字号大小
- (void)setFont:(nullable UIFont *)font range:(NSRange)range;

//设置字距
@property (nullable, nonatomic, strong, readwrite) NSNumber *kern;

//给指定范围的字体设置字距
- (void)setKern:(nullable NSNumber *)kern range:(NSRange)range;

//整个字体的颜色
@property (nullable, nonatomic, strong, readwrite) UIColor *color;

//给定范围设置字体颜色
- (void)setColor:(nullable UIColor *)color range:(NSRange)range;

//设置整个字体的背景颜色
@property (nullable, nonatomic, strong, readwrite) UIColor *backgroundColor;

//给定范围设置字体的背景
- (void)setBackgroundColor:(nullable UIColor *)backgroundColor range:(NSRange)range;

//描边,不懂怎么用
@property (nullable, nonatomic, strong, readwrite) NSNumber *strokeWidth;

//给定范围,增加描边
- (void)setStrokeWidth:(nullable NSNumber *)strokeWidth range:(NSRange)range;

//描边的颜色
@property (nullable, nonatomic, strong, readwrite) UIColor *strokeColor;

//给定范围,描边的颜色
- (void)setStrokeColor:(nullable UIColor *)strokeColor range:(NSRange)range;

//文字阴影
@property (nullable, nonatomic, strong, readwrite) NSShadow *shadow;

//给定范围文字的颜色
- (void)setShadow:(nullable NSShadow *)shadow range:(NSRange)range;

//删除线的样式
@property (nonatomic, readwrite) NSUnderlineStyle strikethroughStyle;

//给定范围,删除线的颜色
- (void)setStrikethroughStyle:(NSUnderlineStyle)strikethroughStyle range:(NSRange)range;

//删除线的颜色
@property (nullable, nonatomic, strong, readwrite) UIColor *strikethroughColor;

//给定范围删除线的颜色
- (void)setStrikethroughColor:(nullable UIColor *)strikethroughColor range:(NSRange)range NS_AVAILABLE_IOS(7_0);

//下划线样式
@property (nonatomic, readwrite) NSUnderlineStyle underlineStyle;

//给定范围,下划线的样式
- (void)setUnderlineStyle:(NSUnderlineStyle)underlineStyle range:(NSRange)range;

//下划线样式
@property (nullable, nonatomic, strong, readwrite) UIColor *underlineColor;

//给定范围,下划线的颜色
- (void)setUnderlineColor:(nullable UIColor *)underlineColor range:(NSRange)range;
- ....省略一些,不是太用

//文字对齐方式
@property (nonatomic, readwrite) NSTextAlignment alignment;

//给定范围的文字对齐方式
- (void)setAlignment:(NSTextAlignment)alignment range:(NSRange)range;

---Convenience methods for text highlight---

//范围,颜色,背景色,文字个性化设置 比如:`NSTextEffectAttributeName`等属性,自己百度查;点击事件,长按事件,没有默认传nil
- (void)setTextHighlightRange:(NSRange)range
                        color:(nullable UIColor *)color
              backgroundColor:(nullable UIColor *)backgroundColor
                     userInfo:(nullable NSDictionary *)userInfo
                    tapAction:(nullable YYTextAction)tapAction
              longPressAction:(nullable YYTextAction)longPressAction;

//范围,颜色,背景色,点击事件
- (void)setTextHighlightRange:(NSRange)range
                        color:(nullable UIColor *)color
              backgroundColor:(nullable UIColor *)backgroundColor
                    tapAction:(nullable YYTextAction)tapAction;

//范围,颜色,背景色,字体个性设置
- (void)setTextHighlightRange:(NSRange)range
                        color:(nullable UIColor *)color
              backgroundColor:(nullable UIColor *)backgroundColor
                     userInfo:(nullable NSDictionary *)userInfo;

//插入字符串到指定位置
- (void)insertString:(NSString *)string atIndex:(NSUInteger)location;

//增加字符串到末尾
- (void)appendString:(NSString *)string;

NSObject

//当前线程上调用方法,可传参数....参数用来干啥?
- (nullable id)performSelectorWithArgs:(SEL)sel, ...;

//当前线程延时几秒后调用,可传参数....参数用来干啥?
- (void)performSelectorWithArgs:(SEL)sel afterDelay:(NSTimeInterval)delay, ...;

//延时调用方法,不可传参
- (void)performSelector:(SEL)sel afterDelay:(NSTimeInterval)delay;
...还有一些调用属性关于线程....

//当前类名
+ (NSString *)className;

....NSObjectForKVO一些属性自行了解....

NSObject+YYModel

//将`NSDictionary`,`NSString`,`NSData` json格式化
+ (nullable instancetype)modelWithJSON:(id)json;

//将一个数据字典转模型
+ (nullable instancetype)modelWithDictionary:(NSDictionary *)dictionary;

//将json数据,转为model
- (nullable id)modelToJSONObject;

//将model转data数据
- (nullable NSData *)modelToJSONData;

//将model转为字符串
- (nullable NSString *)modelToJSONString;

//将模型复制一份
- (nullable id)modelCopy;

//当前模型对象与另一个模型对象是否相等;YES,相等;反之
- (BOOL)modelIsEqual:(id)model;

//模型的描素,返回一个字符串
- (NSString *)modelDescription;

NSArray (YYModel)

//将json信息转为数组格式;例如:[{"name","Mary"},{name:"Joe"}];`cls `:[NSArray class]
+ (nullable NSArray *)modelArrayWithClass:(Class)cls json:(id)json;

//同上;
+ (nullable NSDictionary *)modelDictionaryWithClass:(Class)cls json:(id)json;

//替换属性,比如:id替换成ID  格式如下:
+ (NSDictionary *)modelCustomPropertyMapper {
        return @{@"ID"  : @"id",
    }
+ (nullable NSDictionary<NSString *, id> *)modelCustomPropertyMapper;

//格式验证;比如:
@property NSString *name;
+ (NSDictionary *)modelContainerPropertyGenericClass    {
 return @{@"name" : [NSString class],
}
//用于判断json数据格式的验证,保证数据正确性.->容器类型
+ (nullable NSDictionary<NSString *, id> *)modelContainerPropertyGenericClass;


//模型解析时,黑白名单一下为黑白名单简介
+ (nullable NSArray<NSString *> *)modelPropertyBlacklist;

+ (nullable NSArray<NSString *> *)modelPropertyWhitelist;

//如果一个 Model 需要忽略某些属性,则可以通过
实现协议中的 modelPropertyBlacklist 来返回属性名列表,
YYModel 会在处理过程中忽略这些属性;
//如果一个 Model 只需要处理某些特性的属性,则可以通过实现 
协议中的 modelPropertyWhitelist 来返回属性名列表,
YYModel 在处理中只会处理列表内的属性

NSDate

//返回当前时间,格式自己设置;比如:[NSDate stringWithFormat:@"yyyy-MM-dd HH:mm:ss"];
- (nullable NSString *)stringWithFormat:(NSString *)format;

//将时间字符串以指定时间格式转换为Date
+ (nullable NSDate *)dateWithString:(NSString *)dateString format:(NSString *)format;

NSTimer

//和系统方法无差别,将SEL事件以block封装
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds block:(void (^)(NSTimer *timer))block repeats:(BOOL)repeats;

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds block:(void (^)(NSTimer *timer))block repeats:(BOOL)repeats;    

UIApplication

/// "Documents" folder in this app's sandbox.
@property (nonatomic, readonly) NSURL *documentsURL;
@property (nonatomic, readonly) NSString *documentsPath;
/// "Caches" folder in this app's sandbox.
@property (nonatomic, readonly) NSURL *cachesURL;
@property (nonatomic, readonly) NSString *cachesPath;

/// "Library" folder in this app's sandbox.
@property (nonatomic, readonly) NSURL *libraryURL;
@property (nonatomic, readonly) NSString *libraryPath;

/// Application's Bundle Name (show in SpringBoard).
@property (nullable, nonatomic, readonly) NSString *appBundleName;

/// Application's Bundle ID.  e.g. "com.ibireme.MyApp"
@property (nullable, nonatomic, readonly) NSString *appBundleID;

/// Application's Version.  e.g. "1.2.0"
@property (nullable, nonatomic, readonly) NSString *appVersion;

/// Application's Build number. e.g. "123"
@property (nullable, nonatomic, readonly) NSString *appBuildVersion;

/// Whether this app is being debugged (debugger attached).
@property (nonatomic, readonly) BOOL isBeingDebugged;

//网络请求菊花旋转
- (void)incrementNetworkActivityCount;

//网络请求取消菊花旋转
- (void)decrementNetworkActivityCount;

UIDevice

//以下方法或属性的调用,都是基于[UIDevice currentDevice]
去实现的

宏定义:
//当前设备系统版本号
#define kSystemVersion [UIDevice systemVersion]
//如果系统版本大于某系统号
#define kiOS8Later (kSystemVersion >= 8)

//当前设备的系统版本号,用了`dispatch_once_t`保证安全
+ (double)systemVersion;

/// Whether the device is iPad/iPad mini.
@property (nonatomic, readonly) BOOL isPad;

/// Whether the device is a simulator.
@property (nonatomic, readonly) BOOL isSimulator;

/// Whether the device is jailbroken(越狱).
@property (nonatomic, readonly) BOOL isJailbroken;

/// Wherher the device can make phone calls.
@property (nonatomic, readonly) BOOL canMakePhoneCalls NS_EXTENSION_UNAVAILABLE_IOS("");

//手机名字 e.g "iPhone 5s" "iPad mini 2"
@property (nullable, nonatomic, readonly) NSString *machineModelName;

/// The System's startup time.(启动时间)
@property (nonatomic, readonly) NSDate *systemUptime;

/// WIFI IP address of this device (can be nil). e.g. @"192.168.1.111"
@property (nullable, nonatomic, readonly) NSString *ipAddressWIFI;

/// Cell IP address of this device (can be nil). e.g. @"10.2.2.222"
@property (nullable, nonatomic, readonly) NSString *ipAddressCell;

... 还有硬盘,内存使用情况等...

UIButton

//设置button网络图片
- (void)setImageWithURL:(nullable NSURL *)imageURL
              forState:(UIControlState)state
           placeholder:(nullable UIImage *)placeholder;

//设置button网络图, options 加载过程中的操作
- (void)setImageWithURL:(nullable NSURL *)imageURL
              forState:(UIControlState)state
               options:(YYWebImageOptions)options;

//加载网络图片,button图片加载完成后,执行block操作
- (void)setImageWithURL:(nullable NSURL *)imageURL
              forState:(UIControlState)state
           placeholder:(nullable UIImage *)placeholder
               options:(YYWebImageOptions)options
            completion:(nullable YYWebImageCompletionBlock)completion;

//加载网络背景图片
- (void)setBackgroundImageWithURL:(nullable NSURL *)imageURL
                        forState:(UIControlState)state
                     placeholder:(nullable UIImage *)placeholder;

....背景图加载与image加载相同,方法不同....

UIColor

//16进制转成色值 e.g 0x66CCFF,默认1.0 alpha
+ (UIColor *)colorWithRGB:(uint32_t)rgbaValue;

//16进制转色值,可以设置透明度
+ (UIColor *)colorWithRGB:(uint32_t)rgbValue alpha:(CGFloat)alpha;  

//将一个颜色,转为16进制的值
- (uint32_t)rgbValue;

....获取 红,绿,蓝,饱和度,亮度,色调属性....

UIControl

//移除当前控制器所有taget事件
- (void)removeAllTargets;

//增加target事件,这个是增加前把之前增加的移除
- (void)setTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;

//增加事件,block回调,注意循环引用
- (void)addBlockForControlEvents:(UIControlEvents)controlEvents block:(void (^)(id sender))block;

//增加事件,把以前增加都都移除掉
- (void)setBlockForControlEvents:(UIControlEvents)controlEvents block:(void (^)(id sender))block;

UIImage

//根据Data加载GIF图片,如果图片较大,不能使用这个
+ (nullable UIImage *)imageWithSmallGIFData:(NSData *)data scale:(CGFloat)scale;

//判断数据data是否可用于GIF动画
+ (BOOL)isAnimatedGIFData:(NSData *)data;

//判断路径是否可用于GIF动画
+ (BOOL)isAnimatedGIFFile:(NSString *)path;

//可传data和nsstring PDF文件转为image
+ (nullable UIImage *)imageWithPDF:(id)dataOrPath;

//将color转为图片,宽高1:1
+ (nullable UIImage *)imageWithColor:(UIColor *)color;

//将color转为图片,size 自己写
+ (nullable UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size;

//这个图像是否有alpha通道
- (BOOL)hasAlphaChannel;

//将图片裁剪,画圆角 无边框,无边框颜色
- (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius;

//圆角,边框宽度,边框颜色
- (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius
                               borderWidth:(CGFloat)borderWidth
                               borderColor:(nullable UIColor *)borderColor;

//圆角,边框宽度,边框颜色,边界线
- (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius
                                   corners:(UIRectCorner)corners
                               borderWidth:(CGFloat)borderWidth
                               borderColor:(nullable UIColor *)borderColor
                            borderLineJoin:(CGLineJoin)borderLineJoin;

.... 图片的旋转,平移,纯色图片的生成....

UIImageView

//图片链接,默认加载图
- (void)setImageWithURL:(nullable NSURL *)imageURL placeholder:(nullable UIImage *)placeholder;

//加载图片是可设置状态,e.g 状态栏菊花.图片渐现,使用缓存等...
- (void)setImageWithURL:(nullable NSURL *)imageURL options:(YYWebImageOptions)options;

//`YYWebImageCompletionBlock`包括:获取的image,url,YYWebImageFromType图片获取类型:内存获取,磁盘获取等,`YYWebImageStage`图片标志:取消,失败,完成等,
- (void)setImageWithURL:(nullable NSURL *)imageURL
           placeholder:(nullable UIImage *)placeholder
               options:(YYWebImageOptions)options
            completion:(nullable YYWebImageCompletionBlock)completion;

....还有几个操作,此处省略....

//取消图片请求
- (void)cancelCurrentImageRequest;

//将请求完的图片设置为高亮,用法跟setimge一样.
- (void)setHighlightedImageWithURL:(nullable NSURL *)imageURL placeholder:(nullable UIImage *)placeholder;

.... 高亮用法省略....

UIGestureRecognizer

// 手势触发事件,原来手势是通过SEL来实现事件,YYKit将其封装到block中
//初始化手势时,增加block
- (instancetype)initWithActionBlock:(void (^)(id sender))block;

//为某个手势增加事件
- (void)addActionBlock:(void (^)(id sender))block;

//移除手势所有的block
- (void)removeAllActionBlocks;

UIScrollView

//滚动到指定方向,默认有动画
- (void)scrollToTop;

- (void)scrollToBottom;

- (void)scrollToLeft;

- (void)scrollToRight;

//滚动方向为指定方向,有无动画,传BOOL
- (void)scrollToTopAnimated:(BOOL)animated;

UITableView

//在做 TableView 的删除,移动等操作,需要在动画块中做操作, 要不然会造成崩溃问题
- (void)updateWithBlock:(void (^)(UITableView *tableView))block;

//滚动到指定行,
- (void)scrollToRow:(NSUInteger)row inSection:(NSUInteger)section atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

//插入到指定行
- (void)insertRow:(NSUInteger)row inSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;

//刷新某行
- (void)reloadRow:(NSUInteger)row inSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;

//删除某行
- (void)deleteRow:(NSUInteger)row inSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;

//通过 NSIndexPath 去插入
- (void)insertRowAtIndexPath:(NSIndexPath *)indexPath withRowAnimation:(UITableViewRowAnimation)animation;

//通过 NSIndexPath 刷新
- (void)reloadRowAtIndexPath:(NSIndexPath *)indexPath withRowAnimation:(UITableViewRowAnimation)animation;

//插入分区
- (void)insertSection:(NSUInteger)section withRowAnimation:(UITableViewRowAnimation)animation;

....刷新分区,删除分区,通过 path 刷新,删除,等....

//取消 tableview 中所有被选中的 cell
- (void)clearSelectedRowsAnimated:(BOOL)animated;

YYAnimatedImageView

// YYAnimatedImageView 是继承与 UIImageView 的所以, UIImageView中加载图片方法都使用与它.如果做动画视图的话,用它比较合适.

//是否自动播放动画
@property (nonatomic) BOOL autoPlayAnimatedImage;

//当前动画图片有多少帧
@property (nonatomic) NSUInteger currentAnimatedImageIndex;

//判断当前图片是否正在播放动画
@property (nonatomic, readonly) BOOL currentIsPlayingAnimation;

CALayer

//对 layer 进行图片
- (void)setImageWithURL:(nullable NSURL *)imageURL placeholder:(nullable UIImage *)placeholder;

//图层加载
- (void)setImageWithURL:(nullable NSURL *)imageURL options:(YYWebImageOptions)options;  

...和 UIImage 用法差不多...

NSKeyedUnarchiver

//对文件和数据进行解档,与系统方法无异,多了对异常的返回在 block 中

//对 data 数据进行解档
+ (nullable id)unarchiveObjectWithData:(NSData *)data
                         exception:(NSException *_Nullable *_Nullable)exception;

//对指定路径文件进行解档
+ (nullable id)unarchiveObjectWithFile:(NSString *)path
                         exception:(NSException *_Nullable *_Nullable)exception;

YYImage && YYAnimatedImageView

//YYImage *image = [YYImage imageNamed:@"animation.webp"];
 YYAnimatedImageView *imageView = [YYAnimatedImageView alloc] initWithImage:image];
+ (nullable YYImage *)imageNamed:(NSString *)name; // no cache!
+ (nullable YYImage *)imageWithContentsOfFile:(NSString *)path;
+ (nullable YYImage *)imageWithData:(NSData *)data;
+ (nullable YYImage *)imageWithData:(NSData *)data scale:(CGFloat)scale;

YYLabel

//YYLable 是继承于 UIView的类,用法与 Label 用法,属性无差别.

//设置文字阴影,设置的同时`attributedText`属性也被设置
@property (nullable, nonatomic, strong) UIColor *shadowColor;

//设置阴影的size 属性,设置的同时`attributedText`属性也被设置
@property (nonatomic) CGSize shadowOffset;

//阴影半径
@property (nonatomic) CGFloat shadowBlurRadius;

//文字垂直方向,枚举设置,三个方向
@property (nonatomic) YYTextVerticalAlignment textVerticalAlignment;

...还有一些属性是关于:`YYTextParser`,`YYTextLayout`,`YYTextLinePositionModifier`,`YYTextDebugOption`,它们本身是一个类,又当做 YYLabel 的属性,属于高级用法,自行了解...

//文字的点击事件
@property (nullable, nonatomic, copy) YYTextAction textTapAction;

YYTextView

//YYTextView 的代理,属性与系统的用法一样.

//如果文字中有网址链接,设置链接样式,默认为 None 点击事件由代理实现
@property (nonatomic) UIDataDetectorTypes dataDetectorTypes;

//当“dataDetectorTypes”检测到一系列文本时,该值将是
用于修改范围内的原始属性
@property (nullable, nonatomic, copy) NSDictionary<NSString *, id> *linkTextAttributes;

//设置文字的富文本属性,更多设置看`NSAttributedString+YYText`
@property (nullable, nonatomic, copy) NSAttributedString *attributedText;

//可以查询 layout 一些信息,只读
@property (nullable, nonatomic, strong, readonly) YYTextLayout *textLayout;

//类似于 UITextFile 属性,当没有文字输入时,显示
@property (nullable, nonatomic, copy) NSString *placeholderText;

...还有一个颜色, font placeholder 富文本属性...

//text 的 inset 属性
@property (nonatomic) UIEdgeInsets textContainerInset;

//用户是否可以对内容进行选择 
@property (nonatomic, getter=isSelectable) BOOL selectable;

//对内容是否可以编辑
@property (nonatomic, getter=isEditable) BOOL editable;

//是否允许用户将图片粘贴复制到文本框,默认为 NO
@property (nonatomic) BOOL allowsPasteImage;

//是否允许将其他富文本属性粘贴至文本框,默认为 NO
@property (nonatomic) BOOL allowsPasteAttributedString; 
//是否允许将文本框中的富文本字符串进行拷贝,默认为 YES
@property (nonatomic) BOOL allowsCopyAttributedString;

//文本框是否有,撤销,等状态,默认为 YES
@property (nonatomic) BOOL allowsUndoAndRedo;

YYTimer

//在指定时间开启定时器
- (instancetype)initWithFireTime:(NSTimeInterval)start
                        interval:(NSTimeInterval)interval
                          target:(id)target
                        selector:(SEL)selector
                         repeats:(BOOL)repeats NS_DESIGNATED_INITIALIZER;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 1、改变 UITextField 占位文字 颜色和去掉底部白框 [_userName setValue:[UICo...
    i_MT阅读 1,025评论 0 2
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,266评论 7 249
  • 【奇谈杂阅】拥有希望是美好的,那什么是希望呢?希,其实是微弱、很小的意思——大音希声。虽然微弱、很小,却能“望”得...
    奇妙的奇阅读 112评论 0 0
  • 美丽的烟火 只是瞬间 流星划过天边 你的身影若隐若现 我的心越飞越远 如同落叶般的思念 永远都不会再有春天...
    逝水繁华阅读 131评论 0 0
  • 今天下班,路过解放花园的市场,看到一个男人在卖单只的玫瑰,让我突然想起以前的一些往事。 还记得第一次收玫瑰,是23...
    5809f308a769阅读 282评论 0 0