自动调整大小不以编程方式工作
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];
}
自动布局已关闭。
如果我通过从界面生成器应用自动调整大小来做同样的事情,那么它工作得很好。
我不明白为什么它不起作用。
您正在覆盖所有调整大小的蒙版。
你可以这样做:
[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;
来自
仅设置 (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight) 等同于:
代码中的设置(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)等同于:
我认为 -
你只需要设置灵活的宽度和灵活的底部,因此它的效果是相反的。不要使用灵活的高度。如果您需要使用灵活的高度,那么不要分配灵活的顶部和灵活的宽度,而是分配灵活的宽度、灵活的高度和灵活的底部。所以它会删除最上面的一个。如果分配了灵活的宽度和灵活的高度,请参阅分配左上右下删除相应的内容。现在你应该照做。我认为这会有所帮助。
我这边的小错误。
我的代码是正确的。
此问题与 xCode 6.1 有关,在启动屏幕中我们有来自 xCode 6 的 xib 文件,因此我必须从常规设置 -> 应用程序图标和启动图像中删除对它的引用,然后使用 Assert Catalog 而不是 launchscreen.xib 它开始工作....
无论如何感谢您回答我的问题。
我想创建一个 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];
}
自动布局已关闭。
如果我通过从界面生成器应用自动调整大小来做同样的事情,那么它工作得很好。
我不明白为什么它不起作用。
您正在覆盖所有调整大小的蒙版。
你可以这样做:
[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;
来自
仅设置 (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight) 等同于:
代码中的设置(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)等同于:
我认为 -
你只需要设置灵活的宽度和灵活的底部,因此它的效果是相反的。不要使用灵活的高度。如果您需要使用灵活的高度,那么不要分配灵活的顶部和灵活的宽度,而是分配灵活的宽度、灵活的高度和灵活的底部。所以它会删除最上面的一个。如果分配了灵活的宽度和灵活的高度,请参阅分配左上右下删除相应的内容。现在你应该照做。我认为这会有所帮助。
我这边的小错误。 我的代码是正确的。
此问题与 xCode 6.1 有关,在启动屏幕中我们有来自 xCode 6 的 xib 文件,因此我必须从常规设置 -> 应用程序图标和启动图像中删除对它的引用,然后使用 Assert Catalog 而不是 launchscreen.xib 它开始工作....
无论如何感谢您回答我的问题。