iOS開發(fā)中的一些實用小技巧


以下小技巧都是本人在開發(fā)中得出的小經驗,如有錯誤歡迎指教,有更好的技巧歡迎留言交流常侦,以下如有雷同浇冰,純屬巧合,謝謝聋亡!


1.給新建工程中的storyboard添加navigationbar

nav.png

2.在Nib中選中UIImageView之后肘习,勾選Clip Subviews將會裁剪掉超出UIImageView的范圍外的內容

裁剪.png

3.開發(fā)中的編碼與解碼

  • 1>上傳漢字到服務器,服務器那邊要是沒有做編碼的話坡倔,漢字是亂碼漂佩,此時需要由程序員轉碼成UTF-8,用到的方法是:
NSString * encodingString = [@"你需要上傳轉碼的字符串" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  • 2>通過接口請求后罪塔,返回的數(shù)據投蝉,格式顯示如為:%3A%2F%2F樣式,此時需要我們進行UTF-8解碼征堪,用到的方法是:
NSString *nameString = [model.album_name(你從服務器請求下來的數(shù)據瘩缆,如名字) stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

4.弧度與角度互轉(宏)

// 弧度轉角度
#define RADIANS_TO_DEGREES(radians) ((radians) * (180.0 / M_PI))

// 角度轉弧度
#define DEGREES_TO_RADIANS(angle) ((angle) / 180.0 * M_PI)

4.判斷控件是否在某個試圖上

if ([_label isDescendantOfView: self.testView]) {
    NSLog(@"在視圖上");
}

5.設置圖片不被拉伸

設置.png

6.設置圖片拉伸方式

設置1.png
設置2.png

7.Nib中設置Aspect Fit之后設置高度,圖片會動設置寬高比

(如:圖片原本size為 100 x 45佃蚜,但你使用的時候感覺寬度太窄想要200庸娱,此時就可進行設置,當設置寬度為200時谐算,高度自動跟隨寬度設置)


設置寬高比.png

8.通知系統(tǒng)涌韩,馬上更新布局([self.view layoutIfNeeded])

布局.png

9.文件夾改為.bundle包

.bundle包.png

10.在桌面創(chuàng)建一個.plist文件,方便查看請求數(shù)據(在AF請求成功的Block中寫)

// responseObject為AF請求下來的數(shù)據   參數(shù)一:你隨便從你電腦桌面上拉取一個東西放此處就能得到路徑,然后起個你喜歡的名字后綴為.plist
[responseObject writeToFile:@"/Users/xxxxxxx/Desktop/xxxx.plist" atomically:YES];

11.ARC工程更改為MRC

目前都是自動內存管理氯夷,但想深入了解引用計數(shù)器的+1 臣樱、 -1 、釋放回收的機制腮考,可以一試


11.png

12.使用cocoapods中...Podfile like so報錯

報錯.png

13.debug模式的運用

  • 定義debug宏(測試):
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
  • 關閉debug宏(發(fā)布):


    快照.png

    快照2.png

14.iOS launch啟動界面全屏

1.在<APP>-info.list文件中雇毫,加上“Status bar is initially hidden”選項,選擇yes

2在程序里面添加 [[UIApplication sharedApplication]setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
即可

15.layout踩蔚、drawRect的調用

[self setNeedsLayout] 會在恰當?shù)臅r候調用 layoutSubviews 方法
[self setNeedsDisplay] 會在恰當?shù)臅r候調用 drawRect 方法

16.Nib按鈕設置內容偏移

Edge 選擇你要移動的內容棚放,可以是文字、圖片馅闽、或者是整體


偏移.png

17.Nib中按鈕設置圓角

圓角.png

18.Xib中l(wèi)abel如何換行飘蚯?

在nib或者SB中,一個labe要求顯示多行的時候福也,在換行的地方使用 option + enter 即可實現(xiàn)換行

19.自動縮放到圖片原本尺寸大芯种琛:command 加 =

使用之前


使用之前.png

使用之后


使用之后.png

20.swift3.0延遲執(zhí)行代碼

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3.0) {
        print(要執(zhí)行的代碼)
}

21.貝塞爾曲線角度參考圖


22.自定義代碼片段

@property (nonatomic, retain) <#type#> *<#name#>
※號代表一個空格
代碼片段的路徑

23.CAShapeLayer屬性圖

24.Button防止短時間內重復點擊

25.計算最大行數(shù)

// 總行數(shù) = (總個數(shù) + 每行的最大數(shù) - 1) / 每行最大數(shù)
NSUInteger rows = (dataArr.count + maxCols - 1) / maxCols;

26.修改項目名及腳本替換類名

https://blog.csdn.net/qq_23292307/article/details/80915654

27.修改SearchBar占位文字顏色及大小

    UISearchBar *serchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(58, 10, SCREEN_W-58*2, 30)];
    serchBar.placeholder = @"輸入癥狀、疾病暴凑、醫(yī)生峦甩、科室、醫(yī)院";
    // 修改占位文字
    UITextField * searchField = [serchBar valueForKey:@"_searchField"];
    [searchField setValue:Font_Shallow_999999 forKeyPath:@"_placeholderLabel.textColor"];
    [searchField setValue:[UIFont boldSystemFontOfSize:11] forKeyPath:@"_placeholderLabel.font"];
    serchBar.barTintColor = [UIColor whiteColor];
    serchBar.layer.borderColor = Line_e0e0e0.CGColor;
    serchBar.layer.borderWidth = 1;
    serchBar.layer.masksToBounds = YES;
    serchBar.layer.cornerRadius = 15;
    [upView addSubview:serchBar];

###兼容iOS13(iOS13使用kvc獲取會奔潰)
    UISearchBar *serchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(58, 10, SCREEN_W-58*2, 30)];
    serchBar.placeholder = @"輸入癥狀现喳、疾病凯傲、醫(yī)生犬辰、科室、醫(yī)院";
    serchBar.barTintColor = [UIColor whiteColor];
    serchBar.layer.borderColor = Line_e0e0e0.CGColor;
    serchBar.layer.borderWidth = 1;
    serchBar.layer.masksToBounds = YES;
    serchBar.layer.cornerRadius = 15;
    [self addSubview:serchBar];
    
    UITextField * searchField = nil;
    if (@available(iOS 13.0, *)) {
        searchField = serchBar.searchTextField;
    }else {
        searchField = [serchBar valueForKey:@"_searchField"];
    }
    NSMutableAttributedString *arrStr = [[NSMutableAttributedString alloc] initWithString:searchField.placeholder attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13],NSForegroundColorAttributeName:Font_Shallow_999999}];
    searchField.attributedPlaceholder = arrStr;

28.從數(shù)組中刪除冰单,防止重復添加

// 從父類中抹掉之前創(chuàng)建標簽,防止重復添加
[self.labelArr makeObjectsPerformSelector:@selector(removeFromSuperview)];
[self.labelArr removeAllObjects];

29.返回到指定頁面

for (UIViewController *controller in self.navigationController.viewControllers) {
    if ([controller isKindOfClass:[ChatViewController class]]) {
         [self.navigationController popToViewController:controller animated:YES];
       }
 }

30.A(帶Nav) present B(B不需要Nav)幌缝, B push C(需要Nav) A->B ->C

1、在A中Push B時用Nav包裝B诫欠,present時使用nav

let nav = NavgationViewController.init(rootViewController: B_ViewController())
            self.present(nav, animated: true, completion: nil)

2涵卵、在B中設置加載隱藏Nav,結束顯示Nav

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.setNavigationBarHidden(true, animated: true)
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        navigationController?.setNavigationBarHidden(false, animated: true)
    }

3呕诉、B正常push C即可

let vc = C_ViewController()
self?.navigationController?.pushViewController(vc, animated: true)

注:如B可push到C缘厢,但C中不顯示Nav吃度,設置C顯示時不隱藏Nav

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.setNavigationBarHidden(true, animated: false)
    }

最后附帶一些常用的快捷鍵

名稱 快捷鍵 注:0 為數(shù)字/ O為字母
顯示/隱藏 左側 工具面板 Command + 0
顯示/隱藏 右側 工具面板 Command + Option + 0
Nib或者SB中快速打開關聯(lián)類 Command + Option + enter
方法查找 Control + 6
快速打開查找 Command + Shift + O
文檔和參考 Command + Shift + 0
收起/展開方法實現(xiàn) Command + Option + ?? / ??
返回/前進上次打開的界面 Command + Control + ?? / ??
打開 Command + O
關閉窗口 Command + W
上/下移動代碼 Command + Option + [ / ]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末甩挫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子椿每,更是在濱河造成了極大的恐慌伊者,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件间护,死亡現(xiàn)場離奇詭異亦渗,居然都是意外死亡,警方通過查閱死者的電腦和手機汁尺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門法精,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人痴突,你說我怎么就攤上這事搂蜓。” “怎么了辽装?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵帮碰,是天一觀的道長。 經常有香客問我拾积,道長殉挽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任拓巧,我火速辦了婚禮斯碌,結果婚禮上,老公的妹妹穿的比我還像新娘肛度。我一直安慰自己输拇,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布贤斜。 她就那樣靜靜地躺著策吠,像睡著了一般逛裤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猴抹,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天带族,我揣著相機與錄音,去河邊找鬼蟀给。 笑死蝙砌,一個胖子當著我的面吹牛,可吹牛的內容都是我干的跋理。 我是一名探鬼主播择克,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼前普!你這毒婦竟也來了肚邢?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拭卿,失蹤者是張志新(化名)和其女友劉穎骡湖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體峻厚,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡响蕴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了惠桃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浦夷。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辜王,靈堂內的尸體忽然破棺而出劈狐,到底是詐尸還是另有隱情,我是刑警寧澤誓禁,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布懈息,位于F島的核電站,受9級特大地震影響摹恰,放射性物質發(fā)生泄漏辫继。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一俗慈、第九天 我趴在偏房一處隱蔽的房頂上張望姑宽。 院中可真熱鬧,春花似錦闺阱、人聲如沸炮车。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘦穆。三九已至纪隙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扛或,已是汗流浹背绵咱。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留熙兔,地道東北人悲伶。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像住涉,于是被迫代替她去往敵國和親麸锉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容