배경 그림의 스트레칭

1828 단어
    // 1.1  UIImage 
    UIImage *image = [UIImage imageNamed:@"buttongreen"];
    
    // 1.2  image 
    CGFloat imageWidth = image.size.width;
    CGFloat imageHeight = image.size.height;
    
    // 1.3  --->CapInsets: 
    //  :
    (1)UIImage *resizableImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(imageHeight * 0.5, imageWidth * 0.5, imageHeight * 0.5 - 1, imageWidth * 0.5 - 1)];
     /*
     UIImageResizingModeTile,   
     UIImageResizingModeStretch,   ( )
     */
    (2)UIImage *resizableImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(imageHeight * 0.5, imageWidth * 0.5, imageHeight * 0.5 - 1, imageWidth * 0.5 - 1) resizingMode:UIImageResizingModeTile];

    //  :
       //   =  width - leftCapWidth - 1
       //  (bottom cap) = height - topCapHeight - 1
    UIImage *resizableImage = [image stretchableImageWithLeftCapWidth:imageWidth * 0.5 topCapHeight:imageHeight * 0.5];

    // 2. 
    [self.button setBackgroundImage:resizableImage forState:UIControlStateNormal];

프로젝트에서 그림의 스트레칭 방법을 많이 사용할 수 있기 때문에, 그것을 하나의 클래스 확장으로 정의합니다
#import 
@interface UIImage (SJMExtention)
/**
 *   ( )
 */
+ (instancetype)resizableImageWithLocalImageName:(NSString *)localImageName;
@end

#import "UIImage+SJMExtention.h"
@implementation UIImage (SJMExtention)

+ (instancetype)resizableImageWithLocalImageName:(NSString *)localImageName {
    //  
    UIImage *image = [UIImage imageNamed:localImageName];
    
    //  
    CGFloat imageWidth = image.size.width;
    CGFloat imageHeight = image.size.height;
    
    return [image stretchableImageWithLeftCapWidth:imageWidth * 0.5 topCapHeight:imageHeight * 0.5];
}
@end

코드 설정 사용하지 않음: 그림을 선택하고 수평과 수직으로 스트레칭을 선택하며 보호된 영역을 수정합니다 (폭 / 2, 높이 / 2)

좋은 웹페이지 즐겨찾기