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:
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 :
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
With Interface Builder it's pretty easy to add and configure a UIImageView. The first step is to drag the UIImageView onto your view. Then open the UIImageView properties pane and select the image asset (assuming you have some images in your project).
For example: UIImage *img = [[UIImage alloc] init]; [img setImage:[UIImage imageNamed:@"anyImageName"]]; My UIImage object is declared in . h file and allocated in init method, I need to set image in viewDidLoad method.
UIImage contains the data for an image. UIImageView is a custom view meant to display the UIImage . Save this answer.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With