iOS 需要使用卻不常用的知識點

joker_king發表於2018-12-19

一、 iPhone Size

螢幕快照 2016-07-01 上午9.47.24.png
二、 給navigation Bar 設定 title 顏色

UIColor *yellowColor = [UIColor yellowColor];
NSDictionary *colourDic = [NSDictionary dictionaryWithObject:yellowColor forKey:NSForegroundColorAttributeName];
[self.navigationController.navigationBar setTitleTextAttributes:colourDic];
複製程式碼

三、 UIColor 獲取 RGB 值

UIColor *color = [UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:1.0];
const CGFloat *components = CGColorGetComponents(color.CGColor);
    NSLog(@"Red: %f", components[0]);
    NSLog(@"Green: %f", components[1]);
    NSLog(@"Blue: %f", components[2]);
    NSLog(@"Alpha: %f", components[3]);
複製程式碼

四、 修改textField的placeholder的字型顏色、大小

self.textField.placeholder = @"CVHJBHDFBHDBGKDFBKH";
[self.textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
[self.textField setValue:[UIFont boldSystemFontOfSize:15] forKeyPath:@"_placeholderLabel.font"];
複製程式碼

五、 執行緒中更新 UILabel的text

[self.label1 performSelectorOnMainThread:@selector(setText:)withObject:textDisplay
waitUntilDone:YES];
複製程式碼

六、使用UIScrollViewKeyboardDismissMode實現了檢視在滾動的時候回收鍵盤 這個屬性使用了新的UIScrollViewKeyboardDismissMode enum列舉型別。這個enum列舉型別可能的值如下:

typedef NS_ENUM(NSInteger, UIScrollViewKeyboardDismissMode) {
UIScrollViewKeyboardDismissModeNone,
UIScrollViewKeyboardDismissModeOnDrag,      // dismisses the keyboard when a drag begins
UIScrollViewKeyboardDismissModeInteractive, // the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss
} NS_ENUM_AVAILABLE_IOS(7_0);
複製程式碼

七、ios7 頂部時間statusbar 文字顏色 iOS7上,預設status bar字型顏色是黑色的,要修改為白色的需要在infoPlist裡設定View controller-based status bar appearanceNO然後在AppDelegate中新增如下程式碼

application.statusBarStyle = UIStatusBarStyleLightContent;
複製程式碼

八、獲得當前硬碟空間

NSFileManager *fm = [NSFileManager defaultManager];
NSDictionary *fattributes = [fm attributesOfFileSystemForPath:NSHomeDirectory() error:nil];
NSLog(@"容量%lldG",[[fattributes objectForKey:NSFileSystemSize] longLongValue]/1000000000);
NSLog(@"可用%lldG",[[fattributes objectForKey:NSFileSystemFreeSize] longLongValue]/1000000000);
複製程式碼

九、iOS載入啟動圖的時候隱藏statusbar 只需要在info.plist中加入Status bar is initially hidden 設定為YES就好

十、iOS7 中 boundingRectWithSize:options:attributes:context:計算文字尺寸的使用

NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:13]};
CGSize size = [@"相關NSString" boundingRectWithSize:CGSizeMake(100, 0) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
複製程式碼

十一、iOS 開發,工程中混合使用 ARC 和非ARC Xcode 專案中我們可以使用 ARC 和非 ARC 的混合模式。

如果你的專案使用的非 ARC 模式,則為 ARC 模式的程式碼檔案加入 -fobjc-arc 標籤。如果你的專案使用的是 ARC 模式,則為非 ARC 模式的程式碼檔案加入 -fno-objc-arc 標籤。新增標籤的方法:

  • 開啟:你的target -> Build Phases -> Compile Sources.
  • 雙擊對應的 *.m 檔案
  • 在彈出視窗中輸入上面提到的標籤 -fobjc-arc / -fno-objc-arc
  • 點選 done 儲存

十二、在UIViewController中property的一個UIViewController的Present問題

如果在一個UIViewController A中有一個property屬性為UIViewController B,例項化後,將BVC.view 新增到主UIViewController A.view上,如果在viewB上進行** - (void)presentViewController:(UIViewController )viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion NS_AVAILABLE_IOS(5_0);的操作將會出現,“ Presenting view controllers on detached view controllers is discouraged ”* 的問題。 以為BVC已經present到AVC中了,所以再一次進行會出現錯誤。可以使用以下程式碼解決:

[self.view.window.rootViewController presentViewController:imagePicker animated:YES completion:^{
NSLog(@"Finished");
}];
複製程式碼

十三、改變TabBarItem上所有文字的顏色 正常時候的顏色

[[UITabBarItem appearance]setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateNormal];
複製程式碼

被選中時候的顏色

[[UITabBarItem appearance]setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateSelected];
複製程式碼

十四、改變tabBar的背景顏色

tab.tabBar.barTintColor = [UIColor blackColor];
複製程式碼

十五、設定tabBar上所有導航欄的顏色

[[UINavigationBar appearance] setBarTintColor:[UIColor greenColor]];
複製程式碼

十六、設定label,或者button 這類控制元件的邊框

self.label.layer.borderColor = [[UIColor orangeColor] CGColor];
self.label.layer.borderWidth = 5;
self.label.layer.masksToBounds = YES;
複製程式碼

相關文章