我正在开发通用应用程序。我有一个基于视图的应用程序,其中有一个视图控制器。我正在添加UIImageView作为子视图。

我的问题是,如果将ImageView放在viewDidLoad中,它将在iPad中调整大小。

但是,如果我在按钮点击事件中动态添加ImageView来动态地查看控制器,则按照iPad,UIImageView的大小不会得到调整。相反,它显示的是320 x 480尺寸的ImageView。

注意:我的View Controller具有setAutoresizesSubviewsYES

我的代码如下:

-(void)buttonTap
{
    UIImage *img = [[UIImage alloc]initWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"main-bg" ofType:@"png"]];
    UIImageView *imgViewMainBG = [[UIImageView alloc]initWithImage:img];
    imgViewMainBG.frame = CGRectMake(0,0,320,480);
    imgViewMainBG.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:imgViewMainBG];
    [imgViewMainBG release];
    [img release];
    img=nil;
}

最佳答案

AutoresizingMask用于在superView的大小发生更改时根据superView的大小更改来更改所有子视图的大小,在添加subView时不会调整子视图的大小。

但是您可以找到self.view的边界或框架,并根据如下所示的边界设置imageView的frame属性

 [imgViewMainBG setFrame:CGRectMake(0, 0, self.view.frame.size.width,
                                    self.view.frame.size.height)];

使imgViewMainBG在ipad中完全可见

10-08 14:15