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

iOS應(yīng)用開(kāi)發(fā)中矢量圖的使用及修改矢量圖顏色的方法

 更新時(shí)間:2016年03月03日 09:14:39   作者:WhoJun  
這篇文章主要介紹了iOS應(yīng)用開(kāi)發(fā)中矢量圖的使用及修改矢量圖顏色的方法,文中的方法是在Adobe Illustrator中繪制矢量圖然后導(dǎo)入Xcode中使用,需要的朋友可以參考下

20163391148793.jpg (525×497)

之前搗鼓了點(diǎn)東西,要適配6和Plus,自己做做切圖才發(fā)現(xiàn)確實(shí)有夠煩?;谑噶繄D生成PNG圖形的方法也是事后才知道,學(xué)習(xí)下,希望接下來(lái)可以實(shí)踐。下面進(jìn)入譯文。

iOS應(yīng)用的視覺(jué)形式通常是以圖形元素驅(qū)動(dòng)的。在設(shè)計(jì)開(kāi)發(fā)一款應(yīng)用時(shí),你需要不同規(guī)格的應(yīng)用圖標(biāo),例如不同尺寸的Default.png圖片,同時(shí)還需要為UI的實(shí)現(xiàn)準(zhǔn)備@1x和@2x圖形資源。所有這些圖形元素都會(huì)讓你的產(chǎn)品看上去更吸引人,但弊端也是很明顯的 - 你需要為每種規(guī)格的圖形元素單獨(dú)切圖。而隨著iPhone 6及Plus的發(fā)布,我們又多了一套@3x需要處理,事情變得越來(lái)越復(fù)雜。

幸運(yùn)的是,蘋(píng)果在Xcode 6當(dāng)中給我們帶來(lái)了一些很棒的工具用以管理圖形資源。更棒的是,新的工具和實(shí)現(xiàn)方式可以幫我們從容的應(yīng)對(duì)未來(lái)的iOS設(shè)備,例如基于Storyboard為iOS 8設(shè)備生成啟動(dòng)圖片,這樣你就無(wú)需再為不同的設(shè)備類(lèi)型單獨(dú)制作。此外還有一個(gè)非常重要的新功能,就是在應(yīng)用構(gòu)建階段基于PDF圖片文件自動(dòng)生成各種規(guī)格的圖形資源。本文中,我們就來(lái)一起探索一下這種能幫你節(jié)省大量時(shí)間成本的方法。

第一步:使用Illustrator生成PDF矢量圖形

首先,我們需要PDF格式的矢量圖形。你可以使用Adobe Illustrator或你所熟悉的其他矢量圖形工具來(lái)生成,@1x規(guī)格的即可。

如果你使用Illustrator:

為即將導(dǎo)出的圖形元素創(chuàng)建新文檔,使用@1x規(guī)格來(lái)設(shè)置文檔的尺寸。
將需要導(dǎo)出的圖形元素復(fù)制到新文檔當(dāng)中。
在“File”菜單中選擇“Save”。
在保存時(shí)記得取消勾選“Preserve Illustrator Editing Capabilities”。

20163391241063.jpg (521×409)

由此導(dǎo)出的PDF是可拉伸的矢量圖形,可以在iOS中被完美的處理為@2x和@3x規(guī)格。下一步,我們看看怎樣在Xcode當(dāng)中進(jìn)行設(shè)置。

第二步:在Xcode項(xiàng)目文件中進(jìn)行設(shè)置

要使用矢量化的圖形資源,你需要在Xcode當(dāng)中通過(guò)Asset Catalog來(lái)管理圖片。不用擔(dān)心,你仍可以將標(biāo)準(zhǔn)的圖形導(dǎo)入方式與XCAssets混合起來(lái)使用,不會(huì)產(chǎn)生問(wèn)題。執(zhí)行以下步驟:

  • 如果還沒(méi)有XCAsset文件,那么創(chuàng)建一個(gè)。如果已經(jīng)創(chuàng)建過(guò),就在項(xiàng)目中打開(kāi)。
  • 在“Editor”菜單中選擇“New Image Set”。
  • 在新創(chuàng)建的圖片集中,選擇空的圖片集,然后打開(kāi)Utilities面板。
  • 選擇屬性檢查器Attributes Inspector。
  • 在類(lèi)型下拉列表中,選擇“Vectors”。
  • 圖片集會(huì)變?yōu)橹挥幸粋€(gè)拖放點(diǎn)的“All - Universal”。
  • 將你的PDF矢量圖形拖放到圖片集當(dāng)中。

20163391258695.jpg (542×313)

接下來(lái),你可以像以往一樣使用Image Catalog中的圖形資源,通過(guò)代碼或Interface Builder均可。例如在代碼中使用“imageNamed:”+圖片集名稱(chēng)的字符串。

第三步:見(jiàn)證神奇時(shí)刻

Xcode在構(gòu)建項(xiàng)目時(shí)會(huì)基于Asset Catalog中的PDF矢量圖形自動(dòng)創(chuàng)建@1x、@2x和@3x三種規(guī)格的PNG文件。舉例說(shuō),你為Xcode提供了一個(gè)@1x規(guī)格的,尺寸為150px*150px的PDF文件,那么Xcode會(huì)自動(dòng)創(chuàng)建下列PNG圖形:

@1x規(guī)格,尺寸為150px*150px
@2x規(guī)格,尺寸為300px*300px
@3x規(guī)格,尺寸為450px*450px
應(yīng)用運(yùn)行時(shí),iOS會(huì)根據(jù)不同的設(shè)備類(lèi)型從上面三種圖形資源中挑選出恰當(dāng)?shù)囊?guī)格進(jìn)行輸出。另外記得為AutoLayout設(shè)置好約束,確保圖形不會(huì)在大尺寸設(shè)備上被拉伸。Xcode所做的是基于PDF矢量圖形創(chuàng)建PNG文件;應(yīng)用運(yùn)行時(shí)所輸出的仍然是柵格化的圖片,而非可以自動(dòng)伸縮的矢量圖形。

注意

  • 矢量圖形的支持只是階段性的 - 在構(gòu)建階段,Xcode會(huì)基于PDF生成PNG圖片并輸出到界面當(dāng)中。
  • 一旦完成矢量圖形的設(shè)置,你就無(wú)法為其指定新的輸出尺寸了。如果需要更大的規(guī)格,則需要?jiǎng)?chuàng)建新的PDF圖形,否則在使用AutoLayout時(shí)原來(lái)的圖片會(huì)失真。
  • 正如前面所說(shuō)的,iOS 8只能支持基于PDF生成的PNG文件;但OS X卻可以真正完整的支持矢量圖形,你可以直接通過(guò)Auto Layout或代碼來(lái)縮放矢量圖形,不會(huì)產(chǎn)生任何失真。
  • 這種方式無(wú)法兼容iOS 7之前的系統(tǒng),因?yàn)橄嚓P(guān)的圖形資源都是通過(guò)Asset Catalog管理的。
  • 如果你已經(jīng)使用了類(lèi)似的腳本或工具來(lái)自動(dòng)生成多種規(guī)格的圖形資源,那么這種方式不會(huì)給你帶來(lái)太多用處。不過(guò),如果你的應(yīng)用同時(shí)擁有OS X和iOS兩種版本,并且會(huì)用到一些相同的圖形,那么這種方法將會(huì)是事半功倍的。

改變矢量圖的顏色

為啥要改變矢量圖的顏色呢,直接叫設(shè)計(jì)師切個(gè)圖不就好呢。

主要最近呢,設(shè)計(jì)師回家了,沒(méi)辦法只有一張圖,我又懶的用ps。

就給自己弄了個(gè)課題。

其實(shí)也簡(jiǎn)單在ps中也不就是選中選區(qū),填充顏色,然后保存。

在iOS也是差不多的。

在iOS也是差不多的。

復(fù)制代碼 代碼如下:

//UIImage+ImageColor.h
#import <UIKit/UIKit.h>
@interface UIImage (ImageColor)
/**
 *  修改矢量圖顏色
 *
 *  @param      maskColor 修改顏色
 *  @return
 */
- (UIImage *)imageMaskWithColor:(UIColor *)maskColor;
@end
//UIImage+ImageColor.m
#import "UIImage+ImageColor.h"
@implementation UIImage (ImageColor)
- (UIImage *)imageMaskWithColor:(UIColor *)maskColor {
    if (!maskColor) {
        return nil;
    }

    UIImage *newImage = nil;

    CGRect imageRect = (CGRect){CGPointZero,self.size};
    UIGraphicsBeginImageContextWithOptions(imageRect.size, NO, self.scale);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextTranslateCTM(context, 0.0, -(imageRect.size.height));

    CGContextClipToMask(context, imageRect, self.CGImage);//選中選區(qū) 獲取不透明區(qū)域路徑
    CGContextSetFillColorWithColor(context, maskColor.CGColor);//設(shè)置顏色
    CGContextFillRect(context, imageRect);//繪制

    newImage = UIGraphicsGetImageFromCurrentImageContext();//提取圖片

    UIGraphicsEndImageContext();
    return newImage;
}
@end


總結(jié):
設(shè)計(jì)師能給你切全套那是最好的,自己也省事。
不過(guò)嘛,這個(gè)是有好處滴,可以節(jié)省app大小,可以省去按鈕的高亮、選中等等圖片。

相關(guān)文章

  • iOS中的集合該如何弱引用對(duì)象示例詳解

    iOS中的集合該如何弱引用對(duì)象示例詳解

    這篇文章主要給大家介紹了關(guān)于在iOS中的集合該如何弱引用對(duì)象的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)依稀學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • iOS實(shí)現(xiàn)波浪效果

    iOS實(shí)現(xiàn)波浪效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)波浪效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • IOS中UITableView滾動(dòng)到指定位置

    IOS中UITableView滾動(dòng)到指定位置

    這篇文章主要介紹了IOS中UITableView滾動(dòng)到指定位置的實(shí)現(xiàn)方法,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • IOS實(shí)現(xiàn)驗(yàn)證碼倒計(jì)時(shí)功能(二)

    IOS實(shí)現(xiàn)驗(yàn)證碼倒計(jì)時(shí)功能(二)

    這篇文章主要介紹了IOS實(shí)現(xiàn)驗(yàn)證碼倒計(jì)時(shí)功能,點(diǎn)擊獲取驗(yàn)證碼,進(jìn)入時(shí)間倒計(jì)時(shí),感興趣的小伙伴們可以參考一下
    2016-04-04
  • 刪除xcode 中過(guò)期的描述性文件方法

    刪除xcode 中過(guò)期的描述性文件方法

    下面小編就為大家分享一篇?jiǎng)h除xcode 中過(guò)期的描述性文件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 簡(jiǎn)述iOS屬性中的內(nèi)存管理參數(shù)

    簡(jiǎn)述iOS屬性中的內(nèi)存管理參數(shù)

    這篇文章主要介紹了簡(jiǎn)述iOS屬性中的內(nèi)存管理參數(shù) 的相關(guān)資料,需要的朋友可以參考下
    2018-02-02
  • iOS WKWebview 白屏檢測(cè)實(shí)現(xiàn)的示例

    iOS WKWebview 白屏檢測(cè)實(shí)現(xiàn)的示例

    這篇文章主要介紹了iOS WKWebview 白屏檢測(cè)實(shí)現(xiàn)的示例,幫助大家更好的進(jìn)行ios開(kāi)發(fā),感興趣的朋友可以了解下
    2020-10-10
  • iOS Objective-c實(shí)現(xiàn)左右滑動(dòng)切換頁(yè)面

    iOS Objective-c實(shí)現(xiàn)左右滑動(dòng)切換頁(yè)面

    這篇文章主要為大家詳細(xì)介紹了iOS Objective-c實(shí)現(xiàn)左右滑動(dòng)切換頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • iOS實(shí)現(xiàn)高性能簡(jiǎn)單易用的星星評(píng)分控件

    iOS實(shí)現(xiàn)高性能簡(jiǎn)單易用的星星評(píng)分控件

    在做APP時(shí)會(huì)用到星星評(píng)分的一個(gè)視圖,在網(wǎng)上也找到一些相關(guān)的代碼,下面這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)高性能簡(jiǎn)單易用的星星評(píng)分控件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2018-03-03
  • iOS左滑手勢(shì)失效的解決方法

    iOS左滑手勢(shì)失效的解決方法

    這篇文章主要為大家詳細(xì)介紹了iOS左滑手勢(shì)失效的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評(píng)論

无棣县| 讷河市| 沙河市| 长武县| 大厂| 壶关县| 仙居县| 恩平市| 开平市| 高州市| 江油市| 苗栗市| 江华| 瓮安县| 会理县| 武汉市| 余姚市| 邢台市| 五华县| 正阳县| 翁牛特旗| 海伦市| 锡林郭勒盟| 阿克陶县| 丹东市| 温宿县| 沂源县| 桃园县| 永定县| 东城区| 阿勒泰市| 兖州市| 穆棱市| 三原县| 凤阳县| 贵阳市| 行唐县| 常宁市| 噶尔县| 永兴县| 黄山市|