【问题标题】:CGRectMake doesn't work for custom frames in viewDidLayoutSubviewsCGRectMake 不适用于 viewDidLayoutSubviews 中的自定义框架
【发布时间】:2013-03-30 23:13:46
【问题描述】:

这是我正在使用的代码:

-(void)viewDidLayoutSubviews{
    CGSize screenSize = [[UIScreen mainScreen] bounds].size;

    if (screenSize.height <= 480.0f) {
        self.img.frame = CGRectMake(21, 20, 280, 275);
        self.text.frame = CGRectMake(21, 20, 280, 275);
        self.decrease.frame= CGRectMake(55, 308, 39, 39);
        self.add.frame = CGRectMake(55, 308, 39, 39);
        self.increase.frame =CGRectMake(55, 308, 39, 39);
    }
    else{
        self.img.frame = CGRectMake(21, 20, 280, 400);
        self.text.frame = CGRectMake(21, 20, 280, 400);
        self.decrease.frame= CGRectMake(55, 308, 39, 39);
        self.add.frame = CGRectMake(55, 308, 39, 39);
    }    
}

我正在使用相同的代码(在 viewDidLayoutSubviews 之外)来更改框架,并且效果很好。 我的问题是 viewDidLayoutSubviews 中的代码不起作用。它不会在加载视图时改变帧大小或位置。有什么建议吗?

【问题讨论】:

  • 我不确定,但是一旦创建和加载视图,您就无法重新构建视图。
  • 我不明白,例如,我使用相同的代码为“文本”UITextView 的高度设置动画。
  • 您能否编辑您的帖子以显示您如何执行 viewDidLayoutSubviews,因为它看起来没有被调用。您还应该在其中放置一个 NSLog 或 printF 或断点以确保它确实是。
  • 我就照着用吧,可能是新手的错误,不知道应该怎么执行。
  • stackoverflow.com/a/15242064/1827583 这对我现在有用;

标签: objective-c cocoa-touch ios6 interface-builder autolayout


【解决方案1】:

你不应该先调用[super viewDidLayoutSubviews] 吗?

-(void)viewDidLayoutSubviews{ 
    [super viewDidLayoutSubviews];
    CGSize screenSize = [[UIScreen mainScreen] bounds].size;

    if (screenSize.height <= 480.0f) {
        self.img.frame = CGRectMake(21, 20, 280, 275);
        self.text.frame = CGRectMake(21, 20, 280, 275);
        self.decrease.frame= CGRectMake(55, 308, 39, 39);
        self.add.frame = CGRectMake(55, 308, 39, 39);
        self.increase.frame =CGRectMake(55, 308, 39, 39);
    }
    else{
        self.img.frame = CGRectMake(21, 20, 280, 400);
        self.text.frame = CGRectMake(21, 20, 280, 400);
        self.decrease.frame= CGRectMake(55, 308, 39, 39);
        self.add.frame = CGRectMake(55, 308, 39, 39);
    }    
}

【讨论】:

  • 这没有任何作用。来自文档:“此方法的默认实现什么都不做。”
猜你喜欢
  • 2013-09-21
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2021-05-23
  • 1970-01-01
相关资源
最近更新 更多