常用開發技巧系列(三),開發技巧系列

來源:互聯網
上載者:User

常用開發技巧系列(三),開發技巧系列

熱更新衍生出來的問題:

      前兩天都在說iOS熱更新的問題,結果今天就撞槍口上了,真的!審核被拒了,當然這並不是在我自己的項目使用了什麼RN,或者JSPath等的問題,是個推!!在熱更新出來的第一時間,高德就更新了自己的SDK,個推的今天才更新的,沒錯就是今天!下面是蘋果審核被拒的一些內容,可以給個參考,只要是下面這類型的都是最新的熱更新的問題。它所說的問題,因為項目是原生的能想到的只有第三方SDK會用,上網查了一下而又涉及到這個的SDK我自己用的也只有個推!

恩,你只能去更新個推的SDK,結果Cocopods就出現這個錯誤![!] Unable to satisfy the following requirements:

這個你在cd到專案檔,終端執行   pod update --verbose  就可以解決!(提示:這裡時間會久一點,耐心等!)

警告繼續:

    在Xcode中,警告這個東西還是很煩人的!下面簡單的說兩個消除警告的技巧!

    第一:加入你使用SVN或者Git在管理代碼,這當中你要是刪除了一些你建立了又覺得沒用的檔案。就會有這樣的一堆file missing警告!!!像下面這個同學的情況,要是你項目有一千多個警告,看著肯定覺得煩!

    升級xcode8後,提示一堆file missing警告

      

     其實,在這篇部落格的最後面是有正解的:Xcode->Preferences->Source->Enable Source Control 勾勾去掉!

   解釋一下這個Enable Source Control:啟用/禁用XCode內建Source Control Manager(SCM)。

     第二種:這種警告就和SVN或者Git就沒有什麼關係了

   比如下面的注釋時候的警告,反正我知道環信SDK的確是一堆中文注釋完了之後再加一堆的英文注釋,這個到可以理解,畢竟是要走向世界的!好了,消除警告先。

      

      這樣操作:

     

     點擊我們選中的 Reveal in Log ,你就會看到下面這樣的文字:

      

      大家看到紅線下面上面的 [-Wdeprecated-declrations],方法就在這裡,你把-W換成 -Wno- 再去掉方括弧,剩下的就是我們要用的,比如這裡的就是: -Wno-deprecated-declrations

    然後在我們項目的Build Settings 中尋找 Other Waring Flags,添加 -Wno-deprecated-declrations,這 deprecated-declrations類型的警告就不再會出現。

   (說明:上面的-Wno-deprecated-declrations並不是消除環信SDK警告要輸入的,只是給大家說一下整個的操作步驟!)

圖片的展開處理:

    先說一個最常見的我們經常會見到的聊天的時候訊息顯示框:

    在我們經常用到展開中,你經常看到的imageView.image屬性,這裡面的image是根據imageView的大小展開的。這樣子的缺陷大家也都知道,會變形!

    下面三個是我們經常用到的展開圖片的方法:

 /*    - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight __TVOS_PROHIBITED    - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets NS_AVAILABLE_IOS(5_0); // create a resizable version of this image. the interior is tiled when drawn.    - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode NS_AVAILABLE_IOS(6_0); // the interior is resized according to the resizingMode*/

我們一個一個說說,第一個方法我們經常用到在聊天訊息框的展開,下面是代碼和的對比:

    解釋一下下面方法可展開的範圍都是距離leftCapWidth後的1豎排像素,和距離topCapHeight後的1橫排像素。比如下面代碼的意思是將圖片從左起第2列,上起第2行,座標為(2,2)的像素點進行複製。

    UIImage * image1 = [UIImage imageNamed:@"image"];    UIImageView * imageView1 = [[UIImageView alloc]initWithImage:image1];    imageView1.frame = CGRectMake(50, 100, 300, 60);    [self.view addSubview:imageView1];            UIImage * image2 = [UIImage imageNamed:@"image"];    image2 = [image2 stretchableImageWithLeftCapWidth:1 topCapHeight:1];    UIImageView * imageView = [[UIImageView alloc]initWithImage:image2];    imageView.frame = CGRectMake(50, 200, 300, 60);    [self.view addSubview:imageView];

 再說說第二個方法:

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets NS_AVAILABLE_IOS(5_0); // create a resizable version of this image. the interior is tiled when drawn

下面是具體的使用:

UIImage * image1 = [UIImage imageNamed:@"image"];UIImageView * imageView1 = [[UIImageView alloc]initWithImage:image1];imageView1.frame = CGRectMake(50, 100, 300, 60);[self.view addSubview:imageView1];    UIImage * image2 = [UIImage imageNamed:@"image"];image2 = [image2 resizableImageWithCapInsets:UIEdgeInsetsMake(1, 1, 1, 1)];UIImageView * imageView = [[UIImageView alloc]initWithImage:image2];imageView.frame = CGRectMake(50, 200, 300, 60);[self.view addSubview:imageView];

看完下面的我們說注意點:(左邊是原圖,右邊是展開過的)

                                                                    

注意點:上面的方法有一點需要注意,這個方法預設使用的展開模式是地區複製的,它的意思是把要賦值的地區進行賦值,直到滿足顯示地區!

最後一個方法需要注意的就是後面的枚舉,你可以把上面的方法用這個代替了,看看效果,體會一下這個複製和漸層的區別!

/*      UIImage will implement the resizing mode the fastest way possible while     retaining the desired visual appearance.     Note that if an image's resizable area is one point then UIImageResizingModeTile     is visually indistinguishable from UIImageResizingModeStretch.          typedef NS_ENUM(NSInteger, UIImageResizingMode) {             UIImageResizingModeTile,      // 把要展開的地區進行複製        UIImageResizingModeStretch,   // 把要展開的地區進行漸層展開     };  */

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.