最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

提高iOS開發(fā)效率的小技巧與思路

 更新時(shí)間:2016年07月28日 11:19:22   投稿:daisy  
很多人就會(huì)問學(xué)習(xí)iOS難不難啊?需要掌握哪些技能呢?有哪些技巧和方法呢?下面本文詳細(xì)給大家闡述開發(fā)技巧與思路。

先用一張圖展示學(xué)習(xí)iOS開發(fā)應(yīng)該掌握的知識(shí)體系:

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

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

這種填充方式可以讓圖片不被壓縮變形的前提下,盡可能去填充整個(gè)控件,但是設(shè)置這個(gè)枚舉的填充方式的時(shí)候,記得按照下圖這樣設(shè)置,將超出控件范圍的給切割掉


設(shè)置約束的時(shí)候,記得選擇currentview的那個(gè)對(duì)象


2.設(shè)備適配的問題

還是上面這張圖片,按照設(shè)計(jì)在6p上面來設(shè)置自動(dòng)約束,約好后,在5s上面的時(shí)候,下面的愛心在自動(dòng)約束的設(shè)置下面和專業(yè)設(shè)置太近,這時(shí)候挺影響美觀的,這時(shí)候第一反應(yīng)當(dāng)然是根據(jù)設(shè)備來進(jìn)行調(diào)整,但是我覺得這里完全可以使用下面這種方式來進(jìn)行判斷設(shè)置

 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];

記得修改約束后調(diào)用一下[self.view setNeedsLayout]; 這也是很關(guān)鍵的一點(diǎn),不調(diào)用沒有效果。

3.數(shù)字動(dòng)畫效果


在涉及到數(shù)字比較大的數(shù)據(jù)的時(shí)候可以采取這個(gè)效果來做,效果感人。
想實(shí)現(xiàn)這種效果也比較簡單。

@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];

最重要的一步是設(shè)置format,不然他會(huì)跑小數(shù)的。

4.label文字間距如何調(diào)整

- (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.用戶進(jìn)入app后,在使用app的過程中,進(jìn)行需要登錄的操作。

b.這時(shí)候調(diào)用的后臺(tái)接口一般需要帶上token參數(shù)。這時(shí)候因?yàn)橛脩魶]有登錄,沒有token,所以在這里進(jìn)行判斷本地是否持久化了token.

c.本地沒有持久化token,所以自動(dòng)彈出登錄框,讓用戶進(jìn)行登錄

d.用戶登錄完畢后將相關(guān)數(shù)據(jù),特別是token進(jìn)行本地持久化

小細(xì)節(jié):

a.每次啟動(dòng)app的時(shí)候可以將token 進(jìn)行io操作讀取出來,保存在單例里面,這樣就不用重復(fù)的去進(jìn)行耗費(fèi)性能的io操作

b.因?yàn)轫?xiàng)目中自定義控件必不可少,在控件級(jí)別的頁面,需要使用到需要登錄的操作,這時(shí)候就需要發(fā)送通知給對(duì)應(yīng)的控制器來present login控制器,因?yàn)榭刂破骷?jí)別才能彈出控制器,這樣一來,會(huì)產(chǎn)生大量的通知操作,建議可以將login寫在window上面(這里因?yàn)轫?xiàng)目工期緊,發(fā)現(xiàn)這個(gè)問題的時(shí)候已經(jīng)不好處理,希望后來的兄弟們切記)

c.需要token參數(shù)的接口,token參數(shù)錯(cuò)誤,這時(shí)候需要后臺(tái)給一個(gè)統(tǒng)一的回調(diào),這樣方便集中起來處理

6 . 賬號(hào)互踢的思路

千萬不要嘗試在單個(gè)頁面去處理。

思路如下:

1.需要在登錄登出的發(fā)送通知到各個(gè)控制器,并在通知里面進(jìn)行各個(gè)控制器的初始化操作。

2.在調(diào)用需要登錄才能操作的接口的時(shí)候,后臺(tái)進(jìn)行判斷給你一個(gè)token 參數(shù)失效的回調(diào)

3.作為一個(gè)合理的項(xiàng)目框架,總該有一個(gè)AFN的封裝吧!在封裝的AFN里面進(jìn)行統(tǒng)一判斷,如下圖。(因?yàn)槊總€(gè)后臺(tái)處理方式不一樣,代碼就上圖吧,給你們代碼也復(fù)用不了。)


4.這個(gè)通知發(fā)送到了UITabBarController,進(jìn)行讓用戶重新登錄處理

#import <UIKit/UIKit.h>

@interface WXMainController : UITabBarController

@end
#pragma mark -監(jiān)聽賬號(hào)互踢,這時(shí)候先退出登錄,然后回到首頁
- (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:@"您的賬號(hào)已在其他設(shè)備登錄,現(xiàn)在您已經(jīng)處于退出登錄狀態(tài)" delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil];

    [alter show];
  }


}

#pragma mark-彈出框選擇界面的代理方法,點(diǎn)擊確定就彈出登錄框
- (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開發(fā)也不例外,腳踏實(shí)地從實(shí)踐中發(fā)現(xiàn)方法,熟練后就有技巧。希望本文能夠幫助的學(xué)習(xí)IOS開發(fā)的大家。

相關(guān)文章

  • iOS實(shí)現(xiàn)秒殺活動(dòng)倒計(jì)時(shí)

    iOS實(shí)現(xiàn)秒殺活動(dòng)倒計(jì)時(shí)

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)秒殺活動(dòng)倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Unity移動(dòng)端的復(fù)制要這么寫示例代碼

    Unity移動(dòng)端的復(fù)制要這么寫示例代碼

    這篇文章主要給大家介紹了關(guān)于Unity移動(dòng)端的復(fù)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 舉例詳解iOS開發(fā)過程中的沙盒機(jī)制與文件

    舉例詳解iOS開發(fā)過程中的沙盒機(jī)制與文件

    這篇文章主要介紹了舉例詳解iOS開發(fā)過程中的沙盒機(jī)制與文件,示例代碼為傳統(tǒng)的Obejective-C,需要的朋友可以參考下
    2015-09-09
  • ios觸屏事件指南

    ios觸屏事件指南

    這篇文章主要給大家總結(jié)介紹了2種實(shí)現(xiàn)ios觸屏事件的方法,簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-05-05
  • IOS實(shí)現(xiàn)圖片輪播無限循環(huán)效果

    IOS實(shí)現(xiàn)圖片輪播無限循環(huán)效果

    這篇文章主要為大家詳細(xì)介紹了IOS實(shí)現(xiàn)圖片輪播無限循環(huán)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • iOS中的UIStepper數(shù)值加減器用法指南

    iOS中的UIStepper數(shù)值加減器用法指南

    UIStepper可以有許多應(yīng)用場景,比如在購物應(yīng)用中制作按鈕對(duì)購買商品的數(shù)量進(jìn)行增或減,下面我們就一起來看看iOS中的UIStepper數(shù)值加減器用法指南
    2016-05-05
  • 淺談Xcode 開發(fā)工具 XCActionBar

    淺談Xcode 開發(fā)工具 XCActionBar

    本文主要給大家簡單講解了Xcode的開發(fā)工具 XCActionBar的介紹與使用方法,非常的全面實(shí)用,有需要的小伙伴可以參考下。
    2015-11-11
  • iOS實(shí)現(xiàn)小型計(jì)算器

    iOS實(shí)現(xiàn)小型計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)小型計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • iOS之?dāng)?shù)據(jù)解析之XML解析詳解

    iOS之?dāng)?shù)據(jù)解析之XML解析詳解

    本篇文章主要介紹了iOS之?dāng)?shù)據(jù)解析之XML解析詳解,XML解析常見的兩種方式:DOM解析和SAX解析,有興趣的可以了解一下。
    2016-12-12
  • iOS微信分享配置universal?links步驟解析

    iOS微信分享配置universal?links步驟解析

    這篇文章主要為大家介紹了iOS微信分享配置universal?links步驟詳細(xì)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評(píng)論

城固县| 东宁县| 田林县| 侯马市| 凤台县| 牟定县| 宜兴市| 苏州市| 洛南县| 枣庄市| 聂荣县| 静安区| 平凉市| 库尔勒市| 阆中市| 宣化县| 余干县| 光泽县| 金溪县| 牡丹江市| 合川市| 汝州市| 辉南县| 华池县| 黔江区| 石柱| 册亨县| 宝丰县| 娱乐| 天全县| 旅游| 拉萨市| 汶上县| 咸阳市| 洛阳市| 迁安市| 茂名市| 仁布县| 新干县| 白水县| 道真|