how to use [UIImage resizableImageWithCapInsets:]

前端 未结 3 1758
遥遥无期
遥遥无期 2020-12-19 09:59

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:

相关标签:
3条回答
  • 2020-12-19 10:34

    Use this function, you can change the size of UIImage using this function.

    + (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
        UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
        [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return newImage;
    }
    

    Hope this will help you.

    0 讨论(0)
  • 2020-12-19 10:38

    Stretching is processed in the vertical direction and then in the horizontal direction (or vice versa). So provide top & bottom offsets considering vertical direction that should not stretch and left & right offsets for horizontal direction.

    0 讨论(0)
  • 2020-12-19 10:44

    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.

    0 讨论(0)
提交回复
热议问题