1

我想将图像设置为按钮的背景。所以我创建了一个图像:

按钮

然后我想将它实现为可拉伸的:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20, 20, 200, 400)];  
[button setTitle:@"Test Button" forState:UIControlStateNormal];

UIImage *buttonImage = [_model.background resizableImageWithCapInsets:UIEdgeInsetsMake(6, 8, 6, 7)]; //this is screen 1
//UIImage *buttonImage = _model.background; //this is screen 2   

[button addTarget:self action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchUpInside];        
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[self addSubview:button];

我想像在屏幕 2 中一样进行背景拉伸,但角落会像屏幕 1 一样锐利。_model.background 是 UIImage 包含来自这篇文章顶部的原始按钮背景。

屏幕一 屏幕 2

我用对了吗?我遵循文档,所以UIEdgeInsetsMake(top,left,bottom,right)应该是不可触及的角落,对吧?

4

2 回答 2

2

根据文档,插图内的部分(未通过帽设置锁定的部分)是tiled。所以你应该有一个小的 1 像素区域来平铺。例如,使插图成为UIEdgeIndetsMake(20,8,19,7)

这会产生:

在此处输入图像描述

于 2012-07-23T16:33:32.023 回答
1

老实说,这不是这种效果的最佳图片,但请试试这条线:

[button setBackgroundImage:[[UIImage imageNamed:@"image.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(20.f, 62.f, 20.f, 62.f)] forState:UIControlStateNormal];
于 2012-07-23T16:29:09.287 回答