在UIButton中显示图像的一部分

时间:2012-12-29 02:20:11

标签: iphone objective-c image uibutton

  

可能重复:
  create UIImageView with portion of image file

我设置了一系列约30px x 30px的按钮。我的图像大小为300px x 300px。

当我将图像设置为图像或背景图像时,图像会自动调整大小以适合按钮。我真正希望它能够显示30 x 30的图像部分。

我尝试了几种方法,但它们似乎毫无结果。我试过骑 - (void)layoutSubviews但这导致图像比按钮本身更大并​​引起其他奇怪的行为。

我也尝试修改图像视图属性,但这也不起作用。

最后我尝试过使用imageEdgeInsets,但这又有类似于覆盖layoutSubviews的行为。

我想这样做,因为我有许多按钮可以构成完整的画面,但这些按钮会移动。另一种方法是将图像拆分为绘图样式包,但从长远来看,这将导致额外的工作,并且更喜欢以编程方式执行此操作。任何有关如何进行的指导将不胜感激。

1 个答案:

答案 0 :(得分:2)

在发布问题之后,我进一步调查并发现了以下内容。

这方面的一些方面与位于create UIImageView with portion of image file

的问题非常相似
    UIImage* img = [UIImage imageNamed:currentImage];
    CGRect imgFrame = CGRectMake(x, y, 30, 30);
    CGImageRef imageRef = CGImageCreateWithImageInRect([img CGImage], imgFrame);
    UIImage* subImage = [UIImage imageWithCGImage: imageRef];
    [imageButton setBackgroundImage:subImage forState:UIControlStateNormal];

一旦完成,subImage可以简单地添加为uibutton的图像,例如: -

    [imageButton setBackgroundImage:subImage forState:UIControlStateNormal];
相关问题