将 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 获取旋转、缩放和平移的图像?