繁体   English   中英

自动调整大小无法以编程方式工作

[英]Autoresizing Not Working Programmatically

我想创建一个UIView ,它将根据iPhone屏幕尺寸调整其宽度,并且应将其保留在视图底部。

我使用情节提要创建了新项目,并添加了以下代码。

这是我的代码

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:true];

    UIView *box = [[UIView alloc]initWithFrame:CGRectMake(0, 448, 320, 120)];
    [box setBackgroundColor:[UIColor redColor]];

    [box setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
    [box setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
    [box setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
    [box setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin];
    [box setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin];

    [self.view addSubview:box];
}

自动布局关闭。

如果我通过从界面生成器应用自动调整大小来做同样的事情,那么它工作得很好。

我不明白为什么它不起作用。

http://stackoverflow.com/q/7754851/4030971 

仅设置(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)等效于:

在此处输入图片说明

在代码中设置(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)等效于:

在此处输入图片说明

我认为 -

您只需要设置灵活的宽度和灵活的底部,因此效果相反。 不要使用弹性高度。 如果您需要使用柔性高度,则不要为柔性顶部分配柔性宽度,而是分配柔性宽度,柔性高度和柔性底部。 因此它将删除前一个。 请参阅分配左,右,上,下,如果分配了柔性宽度和高度,则删除相应的内容。 现在你应该照做。 我认为这会有所帮助。

您正在覆盖所有调整大小的蒙版。

您可以这样做:

[box setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin];

这是一个面具,尝试这样做:

[box setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth |
 UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin];
  • 另外,如果您希望高度不变,请删除UIViewAutoresizingFlexibleHeight

编辑

要将其设置为任何设备大小,请执行以下操作:

CGRect fr = box.frame;
fr.size.width = self.view.frame.size.width;
fr.origin.y = self.view.frame.size.height - 120;
box.frame = fr;

从我这边的小错误。 我的代码是正确的。

该问题与xCode 6.1有关,在启动屏幕中,我们从xCode 6获得了xib文件,因此我必须从“常规设置”->“应用程序图标”和“启动图像”中删除对它的引用,并使用断言目录而不是launchscreen.xib并开始工作。 ...

无论如何,感谢您回答我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM