標籤:
不是什麼非常高深的知識、只是記載開發中用到過的一些小技巧。隨時更新!
1、UILabel根據文字數量確定其Frame
//定義UILable寬度最大值CGFloat contentMaxW = 300;//擷取UILabel的Size,注意傳入的Font大小要與UILabel的的Font大小保持相同CGSize contentSize = [content boundingRectWithSize:CGSizeMake(contentMaxW, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil].size;//注意要設定UILable的numberOfLines屬性為0,才能顯示多行文字contentLabel.numberOfLines = 0; 2、UILabel顯示HTML代碼字串
NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[htmlstr dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];contentLabel.attributedText = attrStr; 3、使用AFN封裝網路層
AFN非常優秀的HTTP網路架構,一般在項目中我們會在其基礎上封裝網路層。在這一層處理傳入的url和參數,例如資料加密。
//YQHttpTool.h+ (void)post:(NSString *)url params:(NSDictionary *)params success:(void (^)(id json))success failure:(void (^)(NSError *error))failure;+ (void)get:(NSString *)url params:(NSDictionary *)params success:(void (^)(id json))success failure:(void (^)(NSError *error))failure; //YQHttpTools.m+ (void)post:(NSString *)url params:(NSDictionary *)params auth:(NSDictionary *)auth success:(void (^)(id))success failure:(void (^)(NSError *))failure{ AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; mgr.responseSerializer = [AFHTTPResponseSerializer serializer]; [mgr POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { if(success){ success(responseObject); } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { if(failure){ failure(error); } }];}
+ (void)get:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure{ AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; mgr.responseSerializer = [AFHTTPResponseSerializer serializer]; [mgr GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { if(success){ success(responseObject); } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { if(failure){ failure(error); } }];} 4、檢查更新
//appID為應用的appid,建議定義成宏define appID @"xxxxxxxxx"- (void)checkUpdate{ NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/lookup?id=%@", appID]; [YQHttpTool getWithURL:url params:nil success:^(id json) { id jsonObject = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingAllowFragments error:nil]; if ([jsonObject isKindOfClass:[NSDictionary class]]) { NSDictionary *dic = jsonObject; if (nil != dic) { NSArray *result_array = [dic objectForKey:@"results"]; if (nil != result_array && [result_array count] != 0) { NSDictionary *result_dic = [result_array objectAtIndex:0]; if (nil != result_dic) { NSString *version = [result_dic objectForKey:@"version"]; NSString *releaseNotes = [result_dic objectForKey:@"releaseNotes"]; NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"]; NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile: filePath]; NSString *oldVersion = [dict objectForKey: @"CFBundleShortVersionString"]; if ([version compare:oldVersion options:NSNumericSearch] == NSOrderedDescending) { UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"升級提示" message:releaseNotes delegate:self //委託給Self,才會執行上面的調用 cancelButtonTitle:@"以後再說" otherButtonTitles:@"馬上更新",nil]; [av show]; } } } } } } failure:^(NSError *error) { }];}
//遵循<UIAlertView>
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex != [alertView cancelButtonIndex])
{
NSString *str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@?mt=8", appID];
NSURL *url = [NSURL URLWithString:str];
[[UIApplication sharedApplication] openURL:url];
}
}
iOS開發小知識