3 回答
TA贡献1860条经验 获得超9个赞
设置屏幕矩形后,请执行以下类似操作,以决定在哪个矩形上绘制图像:
float hfactor = value.bounds.size.width / screenRect.size.width;
float vfactor = value.bounds.size.height / screenRect.size.height;
float factor = fmax(hfactor, vfactor);
// Divide the size by the greater of the vertical or horizontal shrinkage factor
float newWidth = value.bounds.size.width / factor;
float newHeight = value.bounds.size.height / factor;
// Then figure out if you need to offset it to center vertically or horizontally
float leftOffset = (screenRect.size.width - newWidth) / 2;
float topOffset = (screenRect.size.height - newHeight) / 2;
CGRect newRect = CGRectMake(leftOffset, topOffset, newWidth, newHeight);
如果您不想放大小于screenRect的图像,请确保factor大于或等于1(例如factor = fmax(factor, 1))。
要获得黑色背景,您可能只想将上下文颜色设置为黑色,并在绘制图像之前调用fillRect。
TA贡献1785条经验 获得超8个赞
我得到“的功能隐式声明的‘最大’”由编译器抛出,即使我记得,包括math.h中(我用的XCode 4.0)更改:float factor = max( …以float factor = MAX( …全部大写)解决了这个问题。FWIW之所以需要重新缩放UIImage(而不是UIImageView),是因为我将图像设置为默认样式的UITableCell。这有助于我避免实现自定义UITableCell。感谢Frank提供的出色解决方案!
- 3 回答
- 0 关注
- 551 浏览
添加回答
举报