IOS类似9.png
圖形用戶界面中的圖形有兩種實(shí)現(xiàn)方式,一種是用代碼畫出來,比如Quartz 2D技術(shù),狠一點(diǎn)有OpenGL ES,另一種則是使用圖片。?
代碼畫的方式比較耗費(fèi)程序員腦力,CPU或GPU; 圖片則耗費(fèi)磁盤空間,會增加app的體積.一般的app我們會偏重于使用圖片來構(gòu)建用戶界面.?
設(shè)計師一般會使用PS來設(shè)計界面,所以在直接使用之前,有一個PSD到png的切圖(Image Slicing)過程.下面是切圖過程中可能要注意的幾點(diǎn).?
一.可重復(fù)元素
在用戶界面的圖形元素中,重復(fù)隨處可見 ,所以我們利用好框架提供的接口, 以比較高的性價比創(chuàng)建用戶界面。
1.Color Pattern
Color Pattern在Web設(shè)計中也經(jīng)常會遇到比如網(wǎng)頁的背景,甚至網(wǎng)絡(luò)中可以找到專門收集各類可重復(fù)的紋理圖案的站點(diǎn),比如?http://subtlepatterns.com. 下面這是一個小圖片模板
?
?
UIColor *circleColorPattern = [UIColor colorWithPatternImage: [UIImage imageNamed:@"circle_pattern.png"]]; 這樣便可以得到一個顏色模板,用這個顏色畫或者填充某個區(qū)域的時候,模板圖片會在指定的區(qū)域中進(jìn)行平鋪.比如把一個View的背景顏色設(shè)置成上面這個顏色,便會得到如下結(jié)果
?
?
2.resizableImage
除了整體平鋪之外,很多時候我們希望某個圖片的局部進(jìn)行平鋪,而其余部分則保持不變. 比如常見的按鈕,聊天的氣泡背景或者圖片的陰影邊框. 這里舉個按鈕的例子,一般情況下為了方便做按鈕就直接切個按鈕背景,如下圖但是自己看,你會發(fā)現(xiàn)按鈕中間大都數(shù)像素都是橫向重復(fù)的,所以可以使用iOS的圖片接口來使用體積更小的圖片實(shí)現(xiàn)相同的效果. 首先使用PS的切圖工具進(jìn)行切圖,下圖中的切圖邏輯是,左邊切14像素(13像素加1像素,1像素為中間重復(fù)部分),右邊切13像素.
Retina屏幕下一個單位對應(yīng)著兩個像素,這里的例子是非Retina下的情況,請注意
?
切圖后將左右合并,變成最終所需要的圖片
?
?
圖片寬度為27像素寬,中間第14個像素為中間重復(fù)的部分.
UIImage *buttonBackgroundImage = [[UIImage imageNamed:@"button_bkg.png"] ?resizableImageWithCapInsets:UIEdgeInsetsMake(0,13,0,13)]; [button setBackgroundImage:buttonBackgroundImage ?forState:UIControlStateNormal]; resizableImageWithCapInsets:的參數(shù)是一個UIEdgeInsets的結(jié)構(gòu)體類型,被capInsets覆蓋到的區(qū)域?qū)3植蛔?#xff0c;而未覆蓋到的部分將會被用來平鋪.
在iOS 5.0之前并沒有這個方法,而是使用的另一個方法
?- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth ?topCapHeight:(NSInteger)topCapHeight; 這個方法有局限性,它只能指定leftCapWidth和topCapHeight,然后只有一個像素能夠重復(fù),也就是rightCapWidth為 imageWidth-leftCapWidth-1,而bottomCapHeight為 imageHeight - topCapHeight -1,所以重復(fù)的始終是中間的那一個像素.
二.圖片邊緣鋸齒和抗鋸齒問題
?
1.需要抗鋸齒
有時候需要在旋轉(zhuǎn)的動畫中使用到圖片,比如按鈕的旋轉(zhuǎn),圖片的旋轉(zhuǎn),為了避免在旋轉(zhuǎn)的過程中出現(xiàn)邊緣鋸齒,我們需要在切圖的時候,在邊緣上多留至少一像素的透明像素,因?yàn)閕OS在處理圖片的時候?qū)τ谕膺吘壥遣蛔隹逛忼X處理的,但是對于圖片內(nèi)部的邊緣則會做抗鋸齒處理.
2.需要去除抗鋸齒效果
當(dāng)某個imageView的frame的origin.x或者origin.y 不為整數(shù)的時候,會出現(xiàn)你不想要的抗鋸齒效果,這個時候本來清晰的圖片邊緣會變得模糊,而這不是你想要的,所以這個時候我們就要對frame的起點(diǎn)進(jìn)行取整。
轉(zhuǎn)載于:https://www.cnblogs.com/lgphp/p/4109607.html
總結(jié)
以上是生活随笔為你收集整理的IOS类似9.png的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抖音最近最火的电影有哪些
- 下一篇: 黄山风景区属于哪个县