iOS開發常用小技巧記錄(持續更新)

Simba_LX發表於2018-07-31

  • 以下問題都是自己在專案中遇到的,解決問題的方法肯定有多種,我所列舉的不一定就是最好的解決辦法。如有問題歡迎大家指正,補充,交流。

  1. 解決同時按兩個按鈕進兩個view的問題。 [button setExclusiveTouch:YES];

  2. 在6p模擬器上輸出寬度是414,在6p真機上輸出是375 是測試機本身設定的問題,到設定-顯示與亮度裡面把顯示模式改成“標準”

  3. 圖片拉伸

UIImage* img=[UIImage imageNamed:@"2.png"];//原圖
UIEdgeInsets edge=UIEdgeInsetsMake(0, 10, 0,10);
//UIImageResizingModeStretch:拉伸模式,通過拉伸UIEdgeInsets指定的矩形區域來填充圖片
//UIImageResizingModeTile:平鋪模式,通過重複顯示UIEdgeInsets指定的矩形區域來填充圖
img= [img resizableImageWithCapInsets:edge resizingMode:UIImageResizingModeStretch];
self.imageView.image=img;
複製程式碼
  1. UITableView頂部有空白區,cell不在最頂端問題 iOS 7 viewcontroller新增屬性automaticallyAdjustsScrollViewInsets,即是否根據按所在介面的 navigationbar與tabbar的高度,自動調整scrollview的 inset,設定為no,讓它不要自動調整就可以了
self.automaticallyAdjustsScrollViewInsets=NO;
複製程式碼
  1. 修改tableViewCell選中狀態的顏色
cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame];
cell.selectedBackgroundView.backgroundColor = [UIColor whiteColor];
複製程式碼
  1. 預設選中第一個cell
    NSInteger selectedIndex = 0;

    NSIndexPath *selectedIndexPath = [NSIndexPath indexPathForRow:selectedIndex inSection:0];

    [_leftSiftTable selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
複製程式碼
  1. 設定btn上的字左對齊
  timeBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

  timeBtn.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0);
複製程式碼
  1. 修改textFieldplaceholder字型顏色和大小
textField.placeholder = @"username is in here!";  
[textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];  
[textField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placeholderLabel.font"];  
複製程式碼
  1. 改變UILable字型大小,使內容自適應 方法一: lab.adjustsFontSizeToFitWidth=YES; 方法二:
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
複製程式碼
  1. 修改狀態列字型顏色 只能設定兩種顏色,黑色和白色,系統預設黑色 設定為白色方法: (1)在plist裡面新增Status bar style,值為UIStatusBarStyleLightContent(白色)或UIStatusBarStyleDefault(黑 色) (2)在Info.plist中設定UIViewControllerBasedStatusBarAppearance 為NO 然後在需要更改的controller裡面寫上下面的程式碼
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
複製程式碼
  1. 關於右劃返回上一級 自定義leftBarButtonItem後無法啟用系統自帶的右劃返回可以再設定以下程式碼
self.navigationController.interactivePopGestureRecognizer.delegate = self;
複製程式碼
  1. 去掉導航欄下邊的黑線
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];
複製程式碼
  1. 點選cell單元格的時候取消選中單元格
-(void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
複製程式碼
  1. 修改pagecontrol顏色
_pageControl.currentPageIndicatorTintColor=SFQRedColor;
_pageControl.pageIndicatorTintColor=SFQGrayColor;
複製程式碼
  1. UIView和UIImageview的userInteractionEnabled屬性 UIView的userInteractionEnabled預設是YES UIImageview的userInteractionEnabled預設是NO userInteractionEnabled=YES則代表該檢視可互動,則不響應父檢視。 userInteractionEnabled=NO不可互動,則該檢視上的子檢視也不會響應。

  2. 去掉UITableView的section的粘性,使其不會懸停。

//有時候使用UITableView所實現的列表,會使用到section,但是又不希望它粘在最頂上而是跟隨滾動而消失或者出現
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {  
    if (scrollView == _tableView) {  
        CGFloat sectionHeaderHeight = 36;
        
        if (scrollView.contentOffset.y <= sectionHeaderHeight && scrollView.contentOffset.y >= 0) {  
            scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);  
        } else if (scrollView.contentOffset.y >= sectionHeaderHeight) {  
            scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);  
        }  
    }  
}
複製程式碼
  1. 使用LaunchScreen.xib啟動圖不會更換 LaunchScreen.xib裡面圖片已經換過,但是重新啟動app發現啟動圖還是之前的老圖。 解決辦法: 刪除app->重啟手機->重新安裝。 原因是系統儲存了app第一次啟動時使用LaunchScreen.xib的圖片,再次啟動app還會使用這張圖片,只要這張圖片存在。 所以建議不要使用LaunchScreen.xib,使用Xcode7最新的LaunchScreen.storyboard,或者繼續使用老的LaunchImage。 具體可以看Flying_Einstein的LaunchImage和LaunchScreen.xib混用出現的坑

相關文章