将 UIImageView 裁剪为 9 块

Posted

技术标签:

【中文标题】将 UIImageView 裁剪为 9 块【英文标题】:Crop an UIImageView in 9 pieces 【发布时间】:2012-05-11 05:02:14 【问题描述】:

我需要将 UIImage 拆分为 9 个按钮。现在我有九个按钮完全占据了整个 iPad 屏幕,但我想在九个空间中裁剪大图像,特别是按钮大小/位置。

现在我有了这个代码:

CGRect cropRect = CGRectMake(button.frame.origin.x, button.frame.origin.y, button.frame.size.width, button.frame.size.height);
CGImageRef croppedImage = CGImageCreateWithImageInRect([image CGImage], cropRect);

[button setImage:image forState:UIControlStateNormal];

CGImageRelease(croppedImage);

但是,所有按钮都显示相同的图像。

任何人都知道发生了什么以及如何解决这个问题(将图像裁剪成九块,在按钮的 X、Y、宽度和重量中)?

我在这方面真的很陌生。

--编辑--

我刚换了:

[button setImage:[UIImage imageWithCGImage:croppedImage] forState:UIControlStateNormal];

谢谢,马丁·皮尔奇! :-)

【问题讨论】:

您的cropRect 可能会为每个按钮生成相同的值,这可能是因为它的来源是(0,0)——您应该使用NSLog 或类似方法检查此值。您需要确保cropRect 的原点对于每个按钮都不同。您也许可以使用 for 循环等来完成此操作。 @modocache,原点正常变化。 哦,我的错。当您说“所有按钮都显示相同的图像”时,它们显示的是哪个图像?使用框架作为第一个按钮的设置,还是最后一个?还是两者都没有? 感谢您的帮助,@modocache。马丁给了我一个正确的答案。 :-) 【参考方案1】:

您正在将原始图像设置为按钮。尝试这样设置:

[button setImage:[UIImage imageWithCGImage:croppedImage] forState:UIControlStateNormal];

希望对你有帮助

【讨论】:

哦,马丁,谢谢!我不知道我以前怎么想不通。

以上是关于将 UIImageView 裁剪为 9 块的主要内容,如果未能解决你的问题,请参考以下文章

获取uiimageview下的uiview部分?

如何以全分辨率从 UIImageView 获取旋转、缩放和平移的图像?

如何裁剪用户缩放的 UIImageView

将 UIImageView 裁剪到父母的边界

如何在“方面填充”模式下将 UIImageView 裁剪为新的 UIImage?

如何在“方面填充”模式下将 UIImageView 裁剪为新的 UIImage?