提高iOS開發效率的小技巧與思路_IOS

來源:互聯網
上載者:User

先用一張圖展示學習iOS開發應該掌握的知識體系:

1.全圖片作為背景的時候,可能遇到的問題。,滑回的時候,圖片停留了一會才滑回去。

原因: 這種介面一般使用一般用imageView的第三種填充方式。

這種填充方式可以讓圖片不被壓縮變形的前提下,儘可能去填充整個控制項,但是設定這個枚舉的填充方式的時候,記得按照下圖這樣設定,將超出控制項範圍的給切割掉


設定約束的時候,記得選擇currentview的那個對象


2.裝置適配的問題

還是上面這張圖片,按照設計在6p上面來設定自動約束,約好後,在5s上面的時候,下面的愛心在自動約束的設定下面和專業設定太近,這時候挺影響美觀的,這時候第一反應當然是根據裝置來進行調整,但是我覺得這裡完全可以使用下面這種方式來進行判斷設定

 CGFloat top = 0;  CGFloat left = 0;  CGFloat bottom = 0;  CGFloat right = 0;  if ([UIScreen ff_screenSize].width == 375) {    top = 80;    left = 70;    bottom = 31;    self.titleLabel.font = [UIFont systemFontOfSize:18];    self.englishLabel.font = [UIFont systemFontOfSize:20];    self.introduceLabel.font = [UIFont systemFontOfSize:14];    right = 33;  }else if ([UIScreen ff_screenSize].width == 414){    bottom = 31;    top = 88;    left = 84;    right = 33;  }else if ([UIScreen ff_screenSize].width == 320){    self.titleLabel.font = [UIFont systemFontOfSize:16];    self.englishLabel.font = [UIFont systemFontOfSize:18];    self.introduceLabel.font = [UIFont systemFontOfSize:13];    self.introduceTop.constant = 8;    top = 70;    left = 44;    bottom = 24;    right = 28;  }  self.collectionButtonLeft.constant = right;  self.chineseLabelTop.constant = top;  self.introlduceLeft.constant = left;  self.collectionButtonbottom.constant = bottom;  [self.view setNeedsLayout];

記得修改約束後調用一下[self.view setNeedsLayout]; 這也是很關鍵的一點,不調用沒有效果。

3.數字動畫效果


在涉及到數字比較大的資料的時候可以採取這個效果來做,效果感人。
想實現這種效果也比較簡單。

@property (weak, nonatomic) IBOutlet UICountingLabel *tuitionLabel; weakSelf.tuitionLabel.text = self.tuitionForAcademyModel.tuition;NSInteger grade = [self.tuitionForAcademyModel.tuition integerValue];weakSelf.tuitionLabel.format = @"%d%";[weakSelf.tuitionLabel countFromZeroTo:grade];

最重要的一步是設定format,不然他會跑小數的。

4.label文字間距如何調整

- (void)configureContentLabelText{  NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:@"Label"];  long number = 5;  CFNumberRef num = CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt8Type,&number);  [attributedString addAttribute:(id)kCTKernAttributeName value:(__bridge id)num range:NSMakeRange(0,[attributedString length])];  CFRelease(num);  self.label.attributedText = attributedString;}

效果如下,字的間距被拉開了


5 . 登入思路

a.使用者進入app後,在使用app的過程中,進行需要登入的操作。

b.這時候調用的後台介面一般需要帶上token參數。這時候因為使用者沒有登入,沒有token,所以在這裡進行判斷本地是否持久化了token.

c.本地沒有持久化token,所以自動彈出登入框,讓使用者進行登入

d.使用者登入完畢後將相關資料,特別是token進行本地持久化

小細節:

a.每次啟動app的時候可以將token 進行io操作讀取出來,儲存在單例裡面,這樣就不用重複的去進行耗費效能的io操作

b.因為項目中自訂控制項必不可少,在控制項層級的頁面,需要使用到需要登入的操作,這時候就需要發送通知給對應的控制器來present login控制器,因為控制器層級才能彈出控制器,這樣一來,會產生大量的通知操作,建議可以將login寫在window上面(這裡因為項目工期緊,發現這個問題的時候已經不好處理,希望後來的兄弟們切記)

c.需要token參數的介面,token參數錯誤,這時候需要後台給一個統一的回調,這樣方便集中起來處理

6 . 帳號互踢的思路

千萬不要嘗試在單個頁面去處理。

思路如下:

1.需要在登入登出的發送通知到各個控制器,並在通知裡面進行各個控制器的初始化操作。

2.在調用需要登入才能操作的介面的時候,後台進行判斷給你一個token 參數失效的回調

3.作為一個合理的項目架構,總該有一個AFN的封裝吧!在封裝的AFN裡面進行統一判斷,如下圖。(因為每個幕後處理方式不一樣,代碼就上圖吧,給你們代碼也複用不了。)


4.這個通知發送到了UITabBarController,進行讓使用者重新登入處理

#import <UIKit/UIKit.h>@interface WXMainController : UITabBarController@end
#pragma mark -監聽帳號互踢,這時候先退出登入,然後回到首頁- (void)addNotification{  WS(weakSelf);  //  [[NSNotificationCenter defaultCenter] postNotificationName:KMutualKickNotification object:nil];  [[NSNotificationCenter defaultCenter] addObserverForName:KMutualKickNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {    [weakSelf alertWindow];  }];}#pragma mark-彈出框選擇介面- (void)alertWindow{  if (!self.isShow) {    self.isShow = YES;    UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"" message:@"您的帳號已在其他裝置登入,現在您已經處於退出登入狀態" delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil];    [alter show];  }}#pragma mark-彈出框選擇介面的代理方法,點擊確定就彈出登入框- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{  if (buttonIndex == 0) {    WXLoginController * loginController = [WXLoginController showLoginContoller:NO andIsShowColse:NO];    [self presentViewController:loginController animated:YES completion:nil];    self.isShow = NO;  }}

任何事情都有方法和技巧,單沒有捷徑,IOS開發也不例外,腳踏實地從實踐中探索方法,熟練後就有技巧。希望本文能夠協助的學習IOS開發的大家。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.