【问题标题】:UIView subview not resizingUIView 子视图未调整大小
【发布时间】:2012-08-28 05:11:57
【问题描述】:

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

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

但是,如果我在按钮点击事件上动态地将 ImageView 添加到视图控制器,则 UIImageView 不会根据 iPad 调整大小。相反,它显示的是 320 x 480 尺寸的 ImageView。

注意:我的视图控制器有 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;         
}

【问题讨论】:

    标签: ios uiview uiviewcontroller autoresize


    【解决方案1】:

    AutoresizingMask 是用来根据 superView 大小的变化来改变所有子视图的大小,每当 superView 的大小发生变化时,它不会在添加子视图时调整子视图的大小。

    但你可以找到 self.view 的边界或框架,并根据下面的边界设置 imageView 的 frame 属性

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

    这样 imgViewMainBG 在 ipad 中完全可见

    【讨论】:

    • 感谢您的回复。但我不能使用它,因为我有其他尺寸与屏幕尺寸不同的子视图。其他子视图具有不同的大小,例如 (20,20,100,150)。我还希望这些子视图在 ipad 中自动调整大小。
    • 这让我省了很多苦头,感谢您提供如此简单、直接的解决方案!
    【解决方案2】:

    尝试将图像视图的contentMode 属性更改为UIViewContentModeScaleToFill

    【讨论】:

      猜你喜欢
      • 2014-09-02
      • 2013-04-12
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多