iOS 常用Category類別分享

來源:互聯網
上載者:User
iOS 常用Category類別分享 字數1340 閱讀86 評論2 喜歡8 前言

     各位都知道,類別是一種為現有的類添加新方法的方式,利用Objective-C的動態運行時分配機制,可以為現有的類添加新方法,這種為現有的類添加新方法的方式稱為類別catagory,他可以為任何類添加新的方法,包括那些沒有原始碼的類。類別使得無需建立對象類的子類就能完成同樣的工作。
     有許多小技術點靠類別直接實現,從而節約時間將精力花在更重要的開發工作單位上,現在我來分享一下我從事iOS開發以來積累的Category。 第一部分 NSString、NSAttributedString NSString包括:
1.png 1.NSString+Category:

一些NSString常規內容

 //電話號碼中間4位****顯示+ (NSString*) getSecrectStringWithPhoneNumber:(NSString*)phoneNum;//銀行卡號中間8位顯示+ (NSString*) getSecrectStringWithAccountNo:(NSString*)accountNo;//計算文字高度- (CGFloat   ) heightWithFontSize:(CGFloat)fontSize width:(CGFloat)width;/**抹除運費小數末尾的0*/- (NSString *) removeUnwantedZero;//去掉前後空格- (NSString *) trimmedString;//Data類型轉換為Base64+ (NSString *)base64StringFromData:(NSData *)data length:(NSUInteger)length;//電話格式+ (NSString*) stringMobileFormat:(NSString*)mobile;//數組中文格式(幾萬)可自行添加+ (NSString*) stringChineseFormat:(double)value;
2.NSString+Predicate:

常用的Regex判斷

//有效電話號碼- (BOOL) isValidMobileNumber;//有效真實姓名- (BOOL) isValidRealName;//是否只有中文- (BOOL) isOnlyChinese;//有效驗證碼(根據自家的驗證碼位元進行修改)- (BOOL) isValidVerifyCode;//有效銀行卡號- (BOOL) isValidBankCardNumber;//有效郵箱- (BOOL) isValidEmail;//有效字母數字密碼- (BOOL) isValidAlphaNumberPassword;//檢測有效身份證//15位- (BOOL) isValidIdentifyFifteen;//18位- (BOOL) isValidIdentifyEighteen;//限制只能輸入數字- (BOOL) isOnlyNumber;
3.NSString+DisplayTime:

從時間戳記轉為顯示時間

//通過時間戳記計算時間差(幾小時前、幾天前)+ (NSString *) compareCurrentTime:(NSTimeInterval) compareDate;//通過時間戳記得出顯示時間+ (NSString *) getDateStringWithTimestamp:(NSTimeInterval)timestamp;//通過時間戳記和格式顯示時間+ (NSString *) getStringWithTimestamp:(NSTimeInterval)timestamp formatter:(NSString*)formatter;
NSAttributedString包括:
2.png


富文本高度、文字與圖片混合的富文本

//由於系統計算富文本的高度不正確,自己寫了方法- (CGFloat)heightWithContainWidth:(CGFloat)width;//直接返回NSAttributedString+ (NSAttributedString *)attributeStringWithPrefixString:(NSString *)prefixString                                           suffixString:(NSString *)suffixString;/** *  直接返回NSAttributedString * *  @param prefixString 前面的string *  @param prefixFont   字型大小 *  @param prefixColor  字型顏色 *  @param suffixString 後面拼接的string *  @param suffixFont   字型大小 *  @param suffixColor  字型顏色 * *  @return 直接返回NSAttributedString */+ (NSAttributedString *)attributeStringWithPrefixString:(NSString *)prefixString                                             prefixFont:(CGFloat)prefixFont                                            prefixColor:(UInt32)prefixColor                                           suffixString:(NSString *)suffixString                                             suffixFont:(CGFloat)suffixFont                                            suffixColor:(UInt32)suffixColor;// string在前 圖片在後+ (NSMutableAttributedString *)attributeStringWithPrefixString:(NSString *)prefixString                                              subffixImageName:(NSString *)subffixImageName;//圖片在前 string在後+ (NSMutableAttributedString *)attributeStringWithSubffixString:(NSString *)subffixString                                                prefixImageName:(NSString *)prefixImageName;
第二部分 NSArray,NSDictionary

這一塊內容主要是防止nil而發生閃退的情況,可變和不可變的各種遇到nil而閃退的情況都有實現 NSArray、NSMutableArray

@interface NSArray (Category)//以下寫法均防止閃退+ (instancetype)safeArrayWithObject:(id)object;- (id)safeObjectAtIndex:(NSUInteger)index;- (NSArray *)safeSubarrayWithRange:(NSRange)range;- (NSUInteger)safeIndexOfObject:(id)anObject;//通過Plist名取到Plist檔案中的數組+ (NSArray *)arrayNamed:(NSString *)name;// 數組轉成json 字串- (NSString *)toJSONStringForArray;@end@interface NSMutableArray (Category)//以下寫法均防止閃退- (void)safeAddObject:(id)object;- (void)safeInsertObject:(id)object atIndex:(NSUInteger)index;- (void)safeInsertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexs;- (void)safeRemoveObjectAtIndex:(NSUInteger)index;- (void)safeRemoveObjectsInRange:(NSRange)range;@end
NSDictionary、NSMutableDictionary
@interface NSDictionary (Category)//用於資料解析,返回對象為字串或實值型別,數組和字典不要用此方法- (id)safeObjectForKey:(NSString *)key;//設定索引值對 針對對象為空白處理- (void)safeSetObject:(id)object forKey:(id)key;- (id)objectForKeyCustom:(id)aKey;- (id)safeKeyForValue:(id)value;/** *  欄位轉成json的字串 * *  @return json 字串 */- (NSString *)toJSONStringForDictionary;@end@interface NSMutableDictionary (Category)- (void)safeSetObject:(id)aObj forKey:(id<NSCopying>)aKey;- (id)safeObjectForKey:(id<NSCopying>)aKey;@end
第三部分 UIView、UIImage、UIButton UIView
//UIMotionEffect和Home頁背景視差效果- (void) addCenterMotionEffectsXYWithOffset:(CGFloat)offset;//把View加在Window上- (void) addToWindow;//View截圖- (UIImage*) screenshot;//ScrollView截圖 contentOffset- (UIImage*) screenshotForScrollViewWithContentOffset:(CGPoint)contentOffset;//View按Rect截圖- (UIImage*) screenshotInFrame:(CGRect)frame;
UIImage,這裡內容很多我只列出一部分,具體的大家可以down或者clone下來之後仔細看
//由顏色產生圖片+ (UIImage *) imageWithColor:(UIColor*)color;//將圖片剪裁至目尺規寸+ (UIImage *) imageByScalingAndCroppingForSourceImage:(UIImage *)sourceImage targetSize:(CGSize)targetSize;//圖片旋轉角度- (UIImage *) imageRotatedByDegrees:(CGFloat)degrees;//展開圖片UIEdgeInsets- (UIImage *) resizableImage:(UIEdgeInsets)insets;//展開圖片CGFloat- (UIImage *) imageByResizeToScale:(CGFloat)scale;//放大圖片CGSize- (UIImage *) imageByResizeWithMaxSize:(CGSize)size;//小樣圖圖片CGSize- (UIImage *) imageWithThumbnailForSize:(CGSize)size;//通過Rect剪裁圖片- (UIImage *) imageByCropToRect:(CGRect)rect;
UIButton,擴大點擊範圍,非常有用的一個方法,大力推薦
- (void)setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left;
總結

     這邊把一些常用的類別給大家列舉了一些,其實在GitHub上的項目裡還有很多其他類別,大家可以仔細研究下,畢竟App有很多功能是共同,基本每個方法都是我因為某些需求寫的、還有部分是網上找的。如果不會使用可以來詢問我,第一次寫分享的文章,不喜勿噴。謝謝
     以後我還會持續更新的。最後放出傳送門。。麻煩下載的同學給點個星或者點個贊 ~(≧▽≦)/~ 謝謝啦。 下載地址

          Git下載地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.