小编ooh*_*aba的帖子

iOS7与Interface Builder生成的NSIBPrototypingLayoutConstraint自动布局约束有关

以前在iOS6中,我的聊天消息视图控制器在IB中通过精心构造的自动布局约束正确显示和动画.这是在Xcode 5中删除约束的当前视图层次结构:

IB布局

在升级到XCode 5和iOS7之后,我发现我需要清除所有旧约束以便考虑默认的半透明状态栏,否则我的工具栏将属于状态栏.尽管使用UIRectEdgeNone调用setEdgesForExtendedLayout:发生了这种情况.

我现在正试图在viewDidLoad中以编程方式创建所有约束:

// self.view.translatesAutoresizingMaskIntoConstraints = NO; // errors either way
NSArray *viewHorizConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_toolbar]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_toolbar)];
[self.view addConstraints:viewHorizConstraints];
viewHorizConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_viewContainer]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_viewContainer)];
[self.view addConstraints:viewHorizConstraints];

NSArray *viewVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(20)-[_toolbar(44)]-[_viewContainer]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_toolbar, _viewContainer)];
[self.view addConstraints:viewVertConstraints];

NSArray *tableContainerVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_tableView(<=460@999)][_viewInputContainer(44)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableView, _viewInputContainer)];
[_viewTableContainer addConstraints:tableContainerVertConstraints];


NSArray *containerVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_viewTableContainer][_viewOptions]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_viewTableContainer, _viewOptions)];
[_viewContainer addConstraints:containerVertConstraints];

//    _constraintContainerVertSpace = [NSLayoutConstraint constraintWithItem:_viewTableContainer attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:_viewContainer attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; // same as below …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c autolayout ios7 xcode5

9
推荐指数
2
解决办法
4978
查看次数

保存到RKManagedObjectStore的mainQueueManagedObjectContext的实体在下一次构建时消失

使用RestKit v0.20.0-rc1,我成功地创建了CoreData映射并从捆绑的JSON文件中导入对象,并使数据保持多个构建.但是,当我创建自己的实体并保存它时,如果我使用[RKManagedObjectStore defaultStore] .mainQueueManagedObjectContext,则实体会在下次构建时立即消失,但如果我使用[RKManagedObjectStore defaultStore] .persistentStoreManagedObjectContext,则会保持正确.

    UserAccount *userAccount = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:managedObjectContext];
    userAccount.userID = @(userID);
    [userAccount addContactMethodsObject:phone];
    NSError *error = nil;
    if(![managedObjectContext save:&error])
        NSLog(@"%@", error);
Run Code Online (Sandbox Code Playgroud)

使用managedObjectContext在上面的代码中保存没有错误,并且来自同一上下文的任何提取都会正确地返回实体.但是在后续构建中,如果我使用mainQueueManagedObjectContext,则提取将始终返回nil,即使上面的代码在主线程上运行.

有什么我想念的吗?

core-data ios restkit

3
推荐指数
1
解决办法
1449
查看次数

标签 统计

autolayout ×1

core-data ×1

ios ×1

ios7 ×1

objective-c ×1

restkit ×1

xcode ×1

xcode5 ×1