簡體   English   中英

iPhone有九個補丁裝載機嗎?

[英]Is there a nine-patch loader for iPhone?

Android有一個很好的方法來定義稱為九補丁的可伸縮圖像。 有關概念的說明,請參閱這些文檔 我們的想法是圍繞一個帶有1像素邊框的png圖像,您可以在其中定義可伸展區域和圖像的填充尺寸。 這絕對是非常棒的,我想在我的iPhone應用程序中使用這個想法。 在將我自己的9補丁寫入UIImage加載器之前,我想我會看看是否已經存在。 谷歌沒有回復任何結果,所以我沒有太多的希望,但問一下並沒有壞處,對吧? :-)

編輯:伙計們,我很欣賞答案,但我知道stretchableImageWithLeftCapWidth... 我正在尋找帶有路徑@"foo.9.png"並返回一個可伸縮的UIImage 這段代碼無疑會在內部使用stretchableImageWithLeftCapWidth... 我確信我可以使用該方法自己編寫代碼。 但是我問其他人是否已經做過了。

我收到了來自Tortuga22軟件的電子郵件,他告訴我他們已經創建了這樣一個庫並在Apache許可下發布了它:

公告: http//blog.tortuga22.com/2010/05/31/announcing-tortuga-22-ninepatch/

源代碼: http//github.com/tortuga22/Tortuga22-NinePatch

用法示例:

// loads-and-caches ninepatch and rendered image of requested size
UIImage buttonImg = [TUNinePatchCache imageOfSize:buttonSize 
                                forNinePatchNamed:@"buttonNormalBackground"];
[self.buttonNeedingBackground setImage:buttonImg
                       forControlState:UIControlStateNormal];

另請參閱UIView的contentStretch屬性。 它比stretchchableImageWithLeftCapWidth更健壯,性能更好。 基本上,它只需在圖像中定義可伸縮的矩形並自動創建縮放的九個補丁即可。 這個內部矩形可以是任何東西 - 它甚至不必位於圖像的中心。 此外,與stretchchableImage不同,此方法可以正確縮小圖形並按照預期的方式對具有光照或光澤的圖形進行操作。 我想不出任何你想要更多的實際應用程序。

是的, UIImage確實支持類似的東西。 看到

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight和leftCapWidth和topCapHeight的文檔

基本上圖像沒有在leftCapWidth區域中從左右邊緣和topCapHeight像素從頂部和底部拉伸。 縮放圖像時,這些限制區域內的區域會受到拉伸。

所有UIImage圖像都支持本機。 默認情況下,整個圖像是可伸縮的,但您可以使用leftCapWidthtopCapHeight屬性設置大寫,也可以使用- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight方法從現有UIImage生成一個。

請注意,在Apple的實現中,當您設置這些值中的一個或兩個時,可伸展區域被強制為高/寬的單個像素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM