2013-10-19 26 views
0

我有此層次結構的圖:的UIImage與resizableimagewithcapinsets失真當試圖使用含有以UIImage的轉換[層renderInContext:]

-UIView -UIImageView -UILabel

的UIImageView包含一個UIImage帶有可重新調整大小/可伸縮圖像,並使用帶有resizableimage和capinsets的圖像創建。

當我採取截圖一切都看起來不錯:

http://i.stack.imgur.com/uA6Lg.png

但是當我嘗試捕捉視圖的UIImage的結果是這樣的:

http://i.stack.imgur.com/IzUyS.jpg

正如你可以看到拉伸圖像的底部看起來很有趣。

這是我使用捕捉視圖到的UIImage代碼:

- (UIImage *) imageWithView:(UIView *)view 
{ 
    [view setBackgroundColor:[UIColor whiteColor]]; 
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 2.0); 
    [view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    [view setBackgroundColor:[UIColor clearColor]]; 
    return img; 
} 

注:該應用程序將只在@ 2X設備上使用。

+0

圖像視圖是否固定爲與容器視圖大小相同?他們有相同的框架大小? – Wain

+0

ImageView和包含它的視圖都沒有約束或引腳。他們有靜態的大小和位置。圖像視圖比容器視圖窄20px並且比邊距短。 –

+0

嘗試使用view.frame.size而不是view.bounds.size。這有幫助嗎? – user1567896

回答

0

看起來resizableImageWithCapInsets:在嘗試捕獲視圖圖層時有問題。

恢復到已棄用的stretchableImageWIthLeftCapWidth:topCapHeight:方法解決了它。但是,如果有人能夠解決問題,我會很高興。