• iOS图片拉伸的三种方法


    方法一:

    iOS中有个叫端盖(end cap)的概念,用来指定图片中的哪一部分不用拉伸,上下左右不需要被拉伸的边缘就称为端盖。

    1 // use resizableImageWithCapInsets: and capInsets. 
    3 - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight __TVOS_PROHIBITED;
    4 @property(nonatomic,readonly) NSInteger leftCapWidth __TVOS_PROHIBITED;   // default is 0. if non-zero, horiz. stretchable. right cap is calculated as width - leftCapWidth - 1
    5 @property(nonatomic,readonly) NSInteger topCapHeight __TVOS_PROHIBITED;   // default is 0. if non-zero, vert. stretchable. bottom cap is calculated as height - topCapWidth - 1
    1  // 拉伸区域距离左端宽度  
    2  NSInteger leftCapWidth = image.size.width * 0.5f;  
    3  // 拉伸区域距离顶端高度  
    4  NSInteger topCapHeight = image.size.height * 0.5f;  
    5  // 重新给image赋值  
    6  image = [image stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight]; 

    方法二:

    通过设置UIEdgeInsets的left、right、top、bottom来分别指定图片拉伸区域距离左端宽度、右端宽度、顶端高度、底端高度
    //通过设置UIEdgeInsets的left、right、top、bottom来分别指定图片拉伸区域距离左端宽度、右端宽度、顶端高度、底端高度
    - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets NS_AVAILABLE_IOS(5_0); // create a resizable version of this image. the interior is tiled when drawn.
    CGFloat top = 10// 拉伸区域距离顶端高度
    CGFloat bottom = 10 ; // 拉伸区域距离底端高度
    CGFloat left = 20// 拉伸区域距离左端宽度
    CGFloat right = 20// 拉伸区域距离右端宽度
    UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
    // 拉伸重新给image赋值
    image = [image resizableImageWithCapInsets:insets];

    方法三:

    在iOS6.0中,UIImage又提供了一个方法处理图片拉伸,对比iOS5.0中的方法,多了一个UIImageResizingMode参数,用来指定拉伸的模式:
    UIImageResizingModeStretch:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片
    UIImageResizingModeTile:平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片
    /*
    *在iOS6.0中,UIImage又提供了一个方法处理图片拉伸,对比iOS5.0中的方法,多了一个UIImageResizingMode参数,用来指定拉伸的模式: * UIImageResizingModeStretch:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片 * UIImageResizingModeTile:平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片 */ - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode NS_AVAILABLE_IOS(6_0); // the interior is resized according to the resizingMode
    CGFloat top = 10// 拉伸区域距离顶端高度
    CGFloat bottom = 10 ; //拉伸区域距离底端高度
    CGFloat left = 20// 拉伸区域距离左端宽度
    CGFloat right = 20// 拉伸区域距离右端宽度
    UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
    // 拉伸后重新给image赋值
     image = [image resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];
  • 相关阅读:
    关于组件(包括控件)设计的一些建议
    请教:不能运行asp程序了??
    (ASP.NET)几个概念与区别
    突然想起99年的那次离别
    什么是计划
    服务器控件开发基础应用设计期Attribute
    收藏些API资料
    今天的感觉呐喊
    重新启用本blog
    关于Clone
  • 原文地址:https://www.cnblogs.com/somebodywx/p/5724752.html
Copyright © 2020-2023  润新知