首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UILabel和UITableView CGrectMake重构- iPhone

UILabel和UITableView CGrectMake重构- iPhone
EN

Stack Overflow用户
提问于 2014-01-23 15:09:30
回答 1查看 619关注 0票数 0

我有一个NavigationControllers A和一个UIViewController B。A有一个标签,标签下面是UITableView。当从A导航到B,再从B导航回A时,我的标签和表视图被重新构建。我已经尝试过在ViewWillAppear方法中通过代码设置框架。然而,我并没有把它放在确切的框架中。这里我遗漏的最基本的东西是什么?

代码语言:javascript
复制
[self.labelUser setFrame:CGRectMake(71, 73, 179, 20)];
[self.customersTable setFrame:CGRectMake(0, 102, 320, 421)];

正在使用自动布局..但这件事我还是解决不了。我已经附上了同样的图片

EDIT :用于KVO检查帧值并将帧更改回原始帧的代码

在ViewDidLoad中

代码语言:javascript
复制
[labelUser addObserver:self forKeyPath:@"frame" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:NULL];

然后

代码语言:javascript
复制
- (void)observeValueForKeyPath:(NSString *)keyPath
                  ofObject:(id)object
                    change:(NSDictionary *)change
                   context:(void *)context {

    if ([keyPath isEqual:@"frame"]) {
        NSLog(@"changed %@ %@", NSStringFromCGRect(labelUser.frame), NSStringFromCGRect(customersTable.frame));
        if (![NSStringFromCGRect(labelUser.frame) isEqual:NSStringFromCGRect(CGRectMake(71, 73, 179, 20))]) {

            [labelUser removeObserver:self forKeyPath:@"frame"];
            [self.labelUser setFrame:CGRectMake(71, 73, 179, 20)];
            [self.customersTable setFrame:CGRectMake(0, 102, 320, 421)];

        }

    }
}

像这样推送视图

代码语言:javascript
复制
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    [self performSegueWithIdentifier:@"segueToOrd" sender:self];

}

我也尝试了KVO方法。但是没有运气..。有什么建议吗?

故事板图像

EN

回答 1

Stack Overflow用户

发布于 2014-01-23 15:25:39

假设您使用的是iOS 7,这是因为默认情况下已将来自XCode 5及更高版本的AUTOLAYOUT添加到项目中。因此,故事板中的帧最终会转换为恒定的帧。因此,如果您更改框架,它可能会在那一刻生效,但当再次加载视图时,它将从故事板中取回框架,而不是您已更改的框架。

所以你的问题的解决方案是你必须手动添加约束,只更改约束常量,而不是frames.Apple很快就会丢弃帧,所以开始学习Autolayout。

附言:如果你在故事板的检查器中取消勾选“使用自动布局”选项,你的代码将会按照你的预期工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21301615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档