图片的拉伸

图片的拉伸。如原图为圆角,

若直接作为button的背景图片,那么效果会是这样。

CGFloat btnX = 80;
CGFloat btnY = 150;
CGFloat btnW = 100;
CGFloat btnH = 20;

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(btnX, btnY, btnW, btnH);
UIImage *imageNormal = [UIImage imageNamed:@"audio_button_nomal"];
[btn setBackgroundImage:imageNormal forState:UIControlStateNormal];

此时可以用
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:
该函数是用来创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,一个是左边不拉伸区域的宽度,另一个是上面不拉伸的高度。
可拉伸的范围是距离leftCapWidth后的1竖排像素,距离topCapHeight后的1横排像素。
如指定参数为10,5。那么表示图片左边10个像素,上边5个像素,不会被拉伸。x坐标为11的一个像素会被横向复制,y坐标为6的一个像素会被纵向复制。
对于该图片,可以用

imageNormal = [imageNormal stretchableImageWithLeftCapWidth:floorf(imageNormal.size.width/2) topCapHeight:floorf(imageNormal.size.height/2)];
//floorf(x)表示取不大于x的最大整数
//代码含义为水平方向将图片中间的1像素用来拉伸,垂直方向同理。

效果为

时间: 2024-10-25 12:56:46

图片的拉伸的相关文章

图片的拉伸问题,修改frame的方式,

一.图片的拉伸问题: 通过图片名称创建UIImage对象(该方式创建出来的图片,被拉伸的非常难看) UIImage *image = [UIImage imageNamed:@"chat_send_nor"]; 通过image对象,调用一个方法,返回一张可拉伸的图片 传入想要保护的区域 UIEdgeInsets insets = UIEdgeInsetsMake(image.size.height * 0.5, image.size.width * 0.5, image.size.he

iOS UIImage 图片局部拉伸的一些学习要点

之前 做纯色局部拉伸 通过 top  bottom left  right 相交的阴影拉伸 屡试不爽 实施方法: imageView.image = [[UIImage imageNamed: @"icon_helper_palace_day"] resizableImageWithCapInsets:palaceInset]]; 我用这个方法 去拉伸一个 有图案的图的 相对纯色的那一部分时候 会发现 图片被拉伸的同时 会有被图片局部本身填充的现象 好像是连续的同一个1个半的图 这个时

iOS开发小技巧--巧用ImageView中的mode(解决图片被拉伸的情况)

自己遇到的问题:在布局ImageView的时候,通过约束将ImageView布局好,但是里面的图片被拉伸的很难看.这时候就用到了Mode属性,如图: 代码实现方式:

在storyboard中 只有 UIImageView的图片的拉伸可以不用代码设置

UIImage *image = [UIImage imageNamed:@"RedButton"]; // 通过一张原始图片生成一张可拉伸的图片 CGFloat imageW = image.size.width * 0.5; CGFloat imageH = image.size.height * 0.5; UIImage *newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(imageH, imageW,

【iOS开发-背景】关于按钮背景图片的拉伸

关于按钮背景图片拉伸与不拉伸的效果 拉伸的效果: 不拉伸的效果 拉伸的效果: 不拉伸的效果 拉伸原理 iOS开发中,有一个方法可以将图片按照指定的形式拉伸,拉伸方式为下图,一般拉伸部分都为0: 实现方式 新建一个UIImage的分类 为UIImage扩充一个方法+(UIImage )resizableImage:(NSString )imageName: 然后再按钮所在的ViewController里面设置按钮的背景 分类 @implementation UIImage (Extension)

解决android:background背景图片被拉伸问题

ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸.src是图片内容(前景),bg是背景,可以同时使用. 此外:scaleType只对src起作用:bg可设置透明度,比如在ImageButton中就可以用android:scaleType控制图片的缩放方式 如上所述,background设置的图片会跟View组件给定的长宽比例进行拉伸.举个例子, 36x36 px的图标

android:background背景图片被拉伸问题

ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸.src是图片内容(前景),bg是背景,可以同时使用. 此外:scaleType只对src起作用:bg可设置透明度,比如在ImageButton中就可以用android:scaleType控制图片的缩放方式 如上所述,background设置的图片会跟View组件给定的长宽比例进行拉伸.举个例子, 36x36 px的图标

iOS边练边学--图片的拉伸

图片拉伸方法一: IOS 5.0以后才有的方法: 1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 UIImageView *imageView = [[UIImageView alloc] init]; 4 imageView.frame = CGRectMake(30, 30, 300, 300); 5 UIImage *image = [UIImage imageNamed:@"chat_send_press_pic"]; 6 //

01-12 图片无损拉伸

张图片如果放大的话一般情况下会失真,如果该图片是规则的,比如这个聊天气泡 ,?可以用如下代码来设置 UIImage *rightImg = [UIImage imageNamed:@"SenderTextNodeBkg.png"]; //设置图片拉伸 rightImg = [rightImg stretchableImageWithLeftCapWidth:30 topCapHeight:35]; 在stretchableImageWithLeftCapWidth:30 topCapH