我有一个关于UIImageView管理问题的XIB文件,用于iphone5屏幕高度和Iphone4屏幕高度。
我尝试像这样管理UIImageView的代码
〜
CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
if ([UIScreen mainScreen].scale == 2.f && screenHeight == 568.0f) {
backgroundImage.autoresizingMask=UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
frameView.autoresizingMask=UIViewAutoresizingFlexibleHeight;
backgroundImage.image = [UIImage imageNamed:@"bg-568h@2x.png"];
//frameView.frame=CGRectMake(16, 0, 288, 527);
frameView.image = [UIImage imageNamed:@"setframe-568h@2x.png"];
}
else
{
backgroundImage.image = [UIImage imageNamed:@"bg@2x.png"];
frameView.image = [UIImage imageNamed:@"setframe@2x.png"];
} ;
请向我推荐一些问题,FrameView是一个具有白色图像的UIImageView,
请 谢谢
答案 0 :(得分:-1)
我遇到了同样的问题,以下是我为了让它适合我所做的工作。
我在几个应用程序中使用的图像需要针对新的4英寸显示器进行调整大小。我编写了下面的代码,根据需要自动调整图像大小,但没有详细说明视图的高度。此代码假定给定图像的高度在NIB中调整为给定帧的整个高度,就像填充整个视图的背景图像一样。在NIB中,UIImageView不应设置为拉伸,这样可以为您拉伸图像并扭曲图像,因为只有高度在宽度保持不变时才会变化。您需要做的是将高度和宽度调整为相同的增量,然后将图像向左移动相同的增量以使其再次居中。这会使两侧剁掉一点,同时使其扩展到给定框架的整个高度。
我这样称呼它......
[self resizeImageView:self.backgroundImageView intoFrame:self.view.frame];
如果在NIB中设置了图像,我会在viewDidLoad中正常执行此操作。但我也有在运行时下载并以这种方式显示的图像。这些图像是用EGOCache缓存的,所以我必须在将缓存的图像设置到UIImageView之后或者在下载图像并将其设置到UIImageView之后调用resize方法。
以下代码并未特别关注显示器的高度。它实际上可以适用于任何显示尺寸,也许可以处理调整图像以进行旋转,并认为每当高度变化大于原始高度时。为了支持更大的宽度,需要调整此代码以响应该场景。
- (void)resizeImageView:(UIImageView *)imageView intoFrame:(CGRect)frame {
// resizing is not needed if the height is already the same
if (frame.size.height == imageView.frame.size.height) {
return;
}
CGFloat delta = frame.size.height / imageView.frame.size.height;
CGFloat newWidth = imageView.frame.size.width * delta;
CGFloat newHeight = imageView.frame.size.height * delta;
CGSize newSize = CGSizeMake(newWidth, newHeight);
CGFloat newX = (imageView.frame.size.width - newWidth) / 2; // recenter image with broader width
CGRect imageViewFrame = imageView.frame;
imageViewFrame.size.width = newWidth;
imageViewFrame.size.height = newHeight;
imageViewFrame.origin.x = newX;
imageView.frame = imageViewFrame;
// now resize the image
assert(imageView.image != nil);
imageView.image = [self imageWithImage:imageView.image scaledToSize:newSize];
}
- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}