UIButton的图像剪裁

4

我有一个使用图片显示的UIButton。

问题是我的图片大小为109x78,但我希望按钮的大小为109x20,固定在左上角,并裁剪高度大于20像素的所有内容。

这是我现在拥有的:

UIButton *startTrainingBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[startTrainingBtn setContentMode:UIViewContentModeTopLeft];
[startTrainingBtn setClipsToBounds:YES];
[startTrainingBtn setImage:[UIImage imageNamed:@"startTrainingClosed"] forState:UIControlStateNormal];
[startTrainingBtn setFrame:CGRectMake(900, 653, 109, 20)];
[self.view addSubview:startTrainingBtn];

我本以为使用ContentMode设置为TopLeft且将ClipsToBounds设置为YES会起作用,但实际上只会缩小图像以适应容器。
1个回答

0
这是一年前提出的问题,我认为你已经做了我要告诉你的事情,但请让我留下记录: 那就使用一个大小适当的图像。你现在有一个比你需要的高度高出两倍以上的图像。
我知道这个行为看起来很奇怪,但这就是按钮图像处理的方式。 不过,你可以使用图像将背景颜色设置为模式,就能达到你想要的效果。
UIButton *startTrainingBtn = [UIButton buttonWithType:UIButtonTypeCustom];
startTrainingBtn.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"startTrainingClosed"]];
[startTrainingBtn setFrame:CGRectMake(900, 653, 109, 20)];
[self.view addSubview:startTrainingBtn];

这个解决方案的问题在于您无法为不同状态设置不同的图像,也无法在按钮上设置选中效果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接