Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

ios - how to use [UIImage resizableImageWithCapInsets:]

I'd like to stretch a image with size 170x50 and show it in an image view with size 240x140. The original image looks like:

enter image description here

I want to keep the four corners and only stretch the center part. I use the following code:


    UIImage *originalImg = [UIImage imageNamed:@"ImageNamed"];
    UIImage *resizeImg = [originalImg resizableImageWithCapInsets:UIEdgeInsetsMake(20 ,10, 10, 10)];
    self.originalImgV.image = originalImg;
    self.resizedImgV.image = resizeImg;

Both originalImgV and resizedImgV are set to "aspect fill". I run it on the simulater, and the result is :

enter image description here

What I can't understand is: the resizedImgV has 2 arrows! Could any one tell me why and how can I use it correctly? Thanks

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Your issue is with the values you pass to UIEdgeInsetsMake. The values are top, left, bottom, right. Due to the arrow in the top left, you need to make sure your left value is big enough to go from the left edge of the image to just to the right of the arrow.

Given the image you posted, you want something like:

 UIEdgeInsetsMake(12, 32, 4, 4)

BTW - the image should only be left + right + 1 pixels wide and top + bottom + 1 pixels tall. So your image doesn't need to be nearly as big as it is.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...