【问题标题】:Obj C: UIView in bottom right cornerObj C:右下角的 UIView
【发布时间】:2023-03-16 11:11:01
【问题描述】:

我似乎无法弄清楚我在这里做错了什么。我想在屏幕的右下角粘贴一个 UIView,但对齐已关闭。在我看来确实加载了...$

int size = 50;
CGRect frame = CGRectMake(self.view.frame.size.width - (size + 10), self.view.frame.size.height - (size + 10), size, size);
UIView *colorView = [[UIView alloc]initWithFrame:frame];
colorView.layer.cornerRadius = size / 2;
colorView.layer.masksToBounds = YES;
colorView.backgroundColor = ColorDarkGray;
[self.view addSubview:colorView];

现在对我来说,这应该是将视图放在右下角并带有一点填充。但它完全脱离了屏幕。我关闭了自动布局,我只是卡住了。有人可以帮我解决这个问题。

【问题讨论】:

  • 注释掉 masktobounds
  • 此时您检查self.view.frame 的值是多少?根据你在哪里实现,self.view 可能尚未布局。
  • 可能您没有使用 iPhone 纵向模式。您是否尝试在 viewWillAppear 中这样做?
  • 自动布局/自动调整大小?应用了哪些规则?
  • viewWillAppear 做到了。谢谢你。认为 ViewDidLoad 将是正确的地方,但显然不是。谢谢。

标签: ios objective-c uiview


【解决方案1】:

我知道这已经很老了 - 但我偶然发现了同样的问题并找到了解决方案。

基本上,如果您在 viewDidLoad 或类似的东西中读出self.view.frame 值,则布局似乎尚未完成,因此框架已关闭。

尝试覆盖 viewWillLayoutSubviews 并在 [super viewWillLayoutSubviews]; 之后再次设置框架 - 它会起作用!

请注意,在viewWillAppear中添加视图可能不会只调用一次,所以可以多次添加视图!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多