iOS那些好用的tips

后續(xù)會逐步添加...

1. 蘋果提供的UIProgressView高度固定為2绑洛,有時候我們就想它變高些敞贡,比如想它高度變?yōu)?,改變frame或者設(shè)置約束發(fā)現(xiàn)無效心褐,可以使用如下方式:

CGAffineTransform transform = CGAffineTransformMakeScale(1.0f, 2.5f);
progressView.transform = transform;

2. 子類視圖超出父類視圖的部分不想要舔涎,有兩種辦法:

1. 設(shè)置子視圖view的clipsToBounds屬性為YES。
2. 設(shè)置子視圖view.layer的masksToBounds屬性為YES逗爹。

3. iOS 上傳圖片限制大小可以使用分類UIImage+Resize

- (NSData *)resizeImageToTargetSize:(CGSize)targetSize maxDataSize:(NSInteger)maxDataSize {
// 設(shè)置缺省標識尺寸
if (CGSizeEqualToSize(targetSize, CGSizeZero)) {
    targetSize = CGSizeMake(1024, 1024);
}
// 判斷尺寸亡嫌,進行尺寸處理
CGSize newSize = CGSizeMake(self.size.width, self.size.height);
CGFloat tempHeight = newSize.height / targetSize.height;
CGFloat tempWidth = newSize.width / targetSize.width;
if (tempWidth > 1.0 && tempWidth > tempHeight) {
    newSize = CGSizeMake(self.size.width / tempWidth, self.size.height / tempWidth);
}
else if (tempHeight > 1.0 && tempWidth < tempHeight){
    newSize = CGSizeMake(self.size.width / tempHeight, self.size.height / tempHeight);
}

// 確認要處理的圖片
UIImage *newImage = nil;
if (tempWidth > 1.0 || tempHeight > 1.0) { // 滿足壓縮條件
    UIGraphicsBeginImageContext(newSize);
    [self drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
} else { // 不需要壓縮(在正常范圍內(nèi),保證清晰)
    newImage = self;
}

// 獲取圖片大小
NSData *imageData = UIImageJPEGRepresentation(newImage,1.0);
CGFloat sizeOriginKB = imageData.length / 1024.0;

// 圖片大小處理
CGFloat resizeRate = 0.9;
while (sizeOriginKB > maxDataSize && resizeRate > 0.1) {
    imageData = UIImageJPEGRepresentation(newImage,resizeRate);
    sizeOriginKB = imageData.length / 1024.0;
    resizeRate -= 0.1;
}

return imageData;
}

4. 改變UITextField的placeholder的字體和顏色

 [textField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"]
 [textField setValue:[UIFont systemFontOfSize:14.0f] forKeyPath:@"_placeholderLabel.font"]

 如果以上設(shè)置方法Xcode發(fā)生崩潰掘而,可以使用如下方法:
 // 創(chuàng)建placeholder富文本屬性
 NSMutableAttributedString *placeholderMAttributesString = [[NSMutableAttributedString alloc] initWithString:@"請輸入您的姓名"];
// 設(shè)置placeholder字體大小
[placeholderMAttributesString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:15] range:NSMakeRange(0, placeholderMAttributesString.length)];
// 設(shè)置placeholder顏色
[placeholderMAttributesString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, placeholderMAttributesString.length)];
// 設(shè)置placeholder
textField.attributedPlaceholder = placeholderMAttributesString;

5. 【iOS8及以下】與【iOS9及以上】系統(tǒng)實現(xiàn)系統(tǒng)UITableViewCell側(cè)滑坑點

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}
- (nullable NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath  *)indexPath {
UITableViewRowAction *action = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"設(shè)置"  handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
    
}];
action.backgroundColor = [UIColor blueColor];

return @[action];
}

以上代碼即可實現(xiàn)iOS9及以上系統(tǒng)UITableViewCell側(cè)滑挟冠,但是運行在iOS8上會發(fā)現(xiàn)側(cè)滑不可用。
解決辦法:
// 此方法不能刪袍睡,否則iOS8側(cè)滑沒反應
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath: (NSIndexPath *)indexPath
{

}

6. 獲取啟動圖片

+ (UIImage *)launchImage {
UIImage *image = nil;
NSArray *launchImages = [NSBundle mainBundle].infoDictionary[@"UILaunchImages"];

for (NSDictionary *dict in launchImages) {
    // 1. 將字符串轉(zhuǎn)換成尺寸
    CGSize size = CGSizeFromString(dict[@"UILaunchImageSize"]);
    
    // 2. 與當前屏幕進行比較
    if (CGSizeEqualToSize(size, [UIScreen mainScreen].bounds.size)) {
        NSString *filename = dict[@"UILaunchImageName"];
        image = [UIImage imageNamed:filename];
        
        break;
    }
}
return image;
}

7. 控制狀態(tài)欄顏色

狀態(tài)欄變白:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

狀態(tài)欄變黑:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

8. 獲取自己的App在蘋果商店最新的版本

https://itunes.apple.com/lookup?id=xxx
xxx 改為蘋果為自己的App分配的applied
獲取如下:
 NSArray *array = responseObject[@"results"];
 NSDictionary *dict = [array lastObject];
 NSLog(@"當前版本為:%@", dict[@"version"]);

9. 設(shè)置某些文件以非ARC編譯

 -fno-objc-arc

10. 查看.a靜態(tài)庫支持的CPU架構(gòu)

 lipo -info xxx.a

11. 強制清除Xcode警告

  #pragma clang diagnostic push  
  #pragma clang diagnostic ignored "xxx"  
  // 這里放有xxx警告的代碼 
  #pragma clang diagnostic pop  

  注:xxx是一般在警告詳情里有知染,通過[]包裹,聲明未使用變量就會出現(xiàn)[-Wunused-variable] 中括號內(nèi)的內(nèi)容即為xxx的值

12. 設(shè)置導航按鈕左右移動

  // 導航右按鈕
  UIBarButtonItem *searchButtonItem = [UIBarButtonItem createBarButtonItemWithTitle:@"搜索" titleColor:nil fontSize:0 target:self action:@selector(search)];
  // 位移按鈕
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]   initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];

  //  rightBarButtonItem的場合width為負數(shù)時斑胜,表示檢索btn向右移動width數(shù)值個像素控淡,由于按鈕本身和邊界間距為5pix,所以width設(shè)為-5時止潘,間距正好調(diào)整為0逸寓;width為正數(shù) 時,正好相反覆山,表示往左移動width數(shù)值個像素
 // 至于width的正負不清楚的竹伸,可以自行調(diào)試
negativeSpacer.width = -3;
self.navigationItem.rightBarButtonItems = @[negativeSpacer, searchButtonItem];

13. 控制器繼承自UITableViewController,默認創(chuàng)建plain風格簇宽,想改為grouped勋篓,可以如下操作:

- (instancetype)initWithStyle:(UITableViewStyle)style {
  return [super initWithStyle:UITableViewStyleGrouped];
}

14. 使用系統(tǒng)方法使用圖片創(chuàng)建UIBarButtomItem,背景色顯示藍色

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@""] style:UIBarButtonItemStyleDone target:self action:@selector(search)];

解決辦法如下:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"ic_index_nav_black"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] style:UIBarButtonItemStyleDone target:self action:@selector(search)];

15. 去除UITextView四個內(nèi)邊距

self.briefTextView.textContainer.lineFragmentPadding = 0; 
self.briefTextView.textContainerInset = UIEdgeInsetsZero;

16. 隱式動畫的控件響應不了點擊事件

UIView做動畫的時候把options設(shè)置UIViewAnimationOptionAllowUserInteraction

下面這些文章魏割,個人感覺比較實用譬嚣!有興趣的可以看看~
多年iOS開發(fā)經(jīng)驗總結(jié)(一)
http://www.reibang.com/p/1ff9e44ccc78
多年iOS開發(fā)經(jīng)驗總結(jié)(二)
http://www.reibang.com/p/9fcd37c0ea05

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钞它,隨后出現(xiàn)的幾起案子拜银,更是在濱河造成了極大的恐慌殊鞭,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尼桶,死亡現(xiàn)場離奇詭異操灿,居然都是意外死亡,警方通過查閱死者的電腦和手機泵督,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門趾盐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人小腊,你說我怎么就攤上這事救鲤。” “怎么了秩冈?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵本缠,是天一觀的道長。 經(jīng)常有香客問我入问,道長丹锹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任队他,我火速辦了婚禮,結(jié)果婚禮上峻村,老公的妹妹穿的比我還像新娘麸折。我一直安慰自己,他們只是感情好粘昨,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布垢啼。 她就那樣靜靜地躺著,像睡著了一般张肾。 火紅的嫁衣襯著肌膚如雪芭析。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天吞瞪,我揣著相機與錄音馁启,去河邊找鬼。 笑死芍秆,一個胖子當著我的面吹牛惯疙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妖啥,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼霉颠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荆虱?” 一聲冷哼從身側(cè)響起蒿偎,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤朽们,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后诉位,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骑脱,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年不从,在試婚紗的時候發(fā)現(xiàn)自己被綠了惜姐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡椿息,死狀恐怖歹袁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寝优,我是刑警寧澤条舔,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站乏矾,受9級特大地震影響孟抗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钻心,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一凄硼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捷沸,春花似錦摊沉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苍柏,卻和暖如春尼斧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背试吁。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工棺棵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人熄捍。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓律秃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親治唤。 傳聞我的和親對象是個殘疾皇子棒动,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容