2013-03-27 14 views
0

我创建一个视图如下:添加一个UIImageView和处理大小/ FIT

// Create sub view for Logo 
logoView =[[UIView alloc] initWithFrame:CGRectMake(0,0,screen.size.width,(screen.size.height - 230))]; 
[logoView setBackgroundColor:[UIColor blueColor]]; 
UIImageView *bgLogoView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg-welcomeLogoView.png"]]; 
[logoView addSubview:bgLogoView]; 
//NSLog(@"the button view height is %f",(screen.size.height - 230)); 
logoView.autoresizingMask = UIViewAutoresizingFlexibleHeight; 

我对logoView一组框。它的高度为230(iphone4 <)和318(iphone5)。我为这个块创建了一个640x460像素的图片。

我怎样才能使这一形象符合的看法。目前它将全尺寸的图像加载到实际尺寸的一半的块中......图像质量是原来尺寸的两倍。我正在测试iphone4,运行ios5。

我确定有一两行错过了以某种方式使图像适合周围视图的视图范围。

回答

0

试试这个:

UIImageView *bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 230)]; 
NSString *bgFilePath = [[NSBundle mainBundle] pathForResource:@"bg-welcomeLogoView" 
                 ofType:@"png"]; 
UIImage *img = [[UIImage alloc] initWithContentsOfFile:bgFilePath]; 
[bgImageView setImage:img]; 
[logoView addSubview:bgImageView]; 

可以在initWithFrame改变你的UIImageView的大小:

2

喜欢的东西

bgLogoView.contentMode = UIViewContentModeScaleAspectFit; 

看的UIView的contentMode属性。可能的值是:

typedef enum { 
    UIViewContentModeScaleToFill, 
    UIViewContentModeScaleAspectFit, 
    UIViewContentModeScaleAspectFill, 
    UIViewContentModeRedraw, 
    UIViewContentModeCenter, 
    UIViewContentModeTop, 
    UIViewContentModeBottom, 
    UIViewContentModeLeft, 
    UIViewContentModeRight, 
    UIViewContentModeTopLeft, 
    UIViewContentModeTopRight, 
    UIViewContentModeBottomLeft, 
    UIViewContentModeBottomRight, 
} UIViewContentMode; 
3

你需要重新设置图像视图的框架。像你一样,图像视图的框架将是图像的大小。另外,设置图像视图的contentMode。最后,设置图像视图的autoresizingMask

logoView =[[UIView alloc] initWithFrame:CGRectMake(0,0,screen.size.width,(screen.size.height - 230))]; 
[logoView setBackgroundColor:[UIColor blueColor]]; 
UIImageView *bgLogoView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg-welcomeLogoView.png"]]; 
bgLogoView.frame = logoView.bounds; // reset the frame 
bgLogoView.contentMode = UIViewContentModeScaleAspectFit; // or other desired mode 
bgLogoView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
[logoView addSubview:bgLogoView]; 
//NSLog(@"the button view height is %f",(screen.size.height - 230)); 
logoView.autoresizingMask = UIViewAutoresizingFlexibleHeight;