如果我使用autolayout安排了UIButton,它的大小可以很好地调整以适应其内容.
如果我将图像设置为button.image,则内在大小似乎再次考虑到这一点.
但是,如果我调整titleEdgeInsets按钮的按钮,布局不会考虑到这一点,而是截断按钮标题.
如何确保按钮的固有宽度占据插入?

编辑:
我使用以下内容:
[self.backButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
Run Code Online (Sandbox Code Playgroud)
目标是在图像和文本之间添加一些分隔.
当使用时解除模态视图控制器时dismissViewController,可以选择提供完成块.是否有相似的等价物popViewController?
完成论证非常方便.例如,我可以使用它来阻止从tableview中删除一行,直到模态关闭屏幕,让用户看到行动画.从推出的视图控制器返回时,我想要同样的机会.
我已经尝试放置popViewController一个UIView动画块,我可以访问完成块.但是,这会对弹出的视图产生一些不必要的副作用.
如果没有这样的方法,有什么办法吗?
我想完全透明UIToolbar和/或UINavigationBar.我已经尝试过为iOS 5之前和之后建议的各种咒语,但似乎没有任何工作.
如何在iOS 7中实现这一目标?
有没有方便的方法来获取一个数组/对象集并创建一个包含第一个数组中每个项的某些属性的新数组/集?
例如,数组包含Car对象.我需要一系列licensePlates,其中每辆车都有一个NSObject car.licensePlate.
目前我只是遍历第一个数组,将对象添加到我的可变结果数组中,但是想知道是否存在为此存在的实例化方法(检查NSArray的文档).
设备旋转时是否可以更改约束?怎么可能实现这一目标?
一个简单的例子可能是两个图像,它们在纵向上一个堆叠在另一个之上,但在景观中是并排的.
如果这是不可能的,我怎么可能完成这个布局?
我正在构建代码中的视图和约束,而不是使用接口构建器.
我有时会想要从布局中删除子视图.它不仅应该被隐藏,而且不应该被视为视图"流"的一部分,可以这么说.一个例子:

我正在寻找一种策略来以编程方式隐藏橙色视图.框的布局及其内容是通过自动布局进行的.有两点需要注意:
我最好的建议是在橙色框中添加一个约束,将其高度设置为0.为此,我需要对橙色框内的所有垂直约束使用非必需的优先级.同时,容器应更新用于分隔框的约束的常量.我不太喜欢这种方法,因为橙色盒子类正在定义它的内部约束,并考虑到它的superview的行为.如果橙色框视图反而暴露了一个"崩溃"方法,它本身就添加了0高度约束,也许我可以忍受它.
有更好的方法吗?
我的应用程序有时会将对象插入到托管对象上下文中,而这些对象并不一定要保存.例如,当我启动"添加实体"模式时,我创建了一个托管对象并将其分配给模态.如果用户从该模态中保存,我将保存上下文.如果他取消,我删除该对象,不需要保存.
我现在已经引入了一个"导入"功能,切换到我的应用程序(使用URL方案)并添加一个实体.由于其中一个模态可能是打开的,因此此时保存上下文是不安全的.即使用户取消,也会保存为模态创建的瞬态对象,并且无法保证稍后将保存删除(来自取消操作) - 用户可能会退出该应用程序.
同样,每当我的应用程序退出时,我都无法保存.如果模式在该点处打开,则将错误地保存临时对象.
为了解决这个问题,我试图用一个孩子背景下,作为讨论在这里.阅读了所有我能在SO上找到的东西,我会有几个问题:
我应该为每个上下文使用哪种并发类型?请记住,我没有这样做是为了获得性能/线程优势.我知道如果要有子上下文,我不能使用NSConfinementConcurrencyType作为主上下文,但我不确定其他两个选项中哪一个最适合.对于子上下文,它是否需要匹配?或者我甚至可以在这里使用限制类型?我尝试了各种各样的组合,似乎一切正常,但我想知道哪个适合我的要求.
(附带问题)如果我使用iVar类,为什么我才能让它工作?我以为我应该能够在创建它的方法中声明临时上下文,然后使用entity.managedObjectContext来引用它.但是当我访问它时它似乎是零?如果我改为使用iVar来保存引用,则会对此进行纠正.
什么是正确的方法或将更改传播到主要上下文?我已经在每个上下文中看到了使用不同的块包装实现的各种注释.它取决于我的并发类型吗?我目前的版本是:
//save the new entity in the temporary context
NSError *error = nil;
if (![myObject.managedObjectContext save:&error]) {NSLog(@"Error - unable to save new object in its (temporary) context");}
//propogate the save to the main context
[self.mainContext performBlock:^{
NSError *error2 = nil;
if (![self.mainContext save:&error2]) {NSLog(@"Error - unable to merge new entity into main context");}
}];
Run Code Online (Sandbox Code Playgroud)当我的用户保存时,它会向其委托(我的主视图控制器)发送一条消息.委托传递添加的对象,它必须在主上下文中找到相同的对象.但是当我在主要环境中寻找它时,却找不到它.主要上下文确实包含实体 - 我可以记录它的详细信息并确认它在那里 - 但地址是不同的?如果这意味着发生(为什么?),如何在保存后在主上下文中找到添加的对象?
感谢您的任何见解.很抱歉有一个很长的,多部分的问题,但我认为有人可能已经解决过所有这些问题.
Apple现在要求为App Store提交1024x1024图标.我在哪里可以看到使用此图标的示例?我在iTunes商店中找到的最大图标大约是180x180 - 即使在视网膜屏幕上,360x360就足够了.
我正在花一些时间来设计我的图标的大版本,但如果要缩小,我需要为此设计,不是吗?
打开Apple的日历应用程序.命名新约会时,它会自动将第一个字母大写.它没有使用'更正'样式换出来执行此操作.
对于我的生活,我无法重现这种行为.在IB中,我将UITextField的大小写设置为Word,但它似乎根本没有效果.如果我打开校正,它会用大写版本换掉这个单词,但这不太对.
我是否需要在代码中处理此问题,方法是检查每个按键?这可能是微不足道的,除了我担心我将遗漏的所有角落情况,例如当用户手动使用'shift'来否定大小写,或者删除和重新键入时,在这种情况下它不应该大写.
或者也许有一种方法可以简单地加载按下shift的文本字段?这是实施它的常用方法吗?
我提出了一个视图控制器:
SCAAboutController2 *controller = [[SCAAboutController2 alloc] initWithNibName:nil bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
[self presentViewController:navController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
在呈现之前,设备会挂起3-4秒.我试图用仪器来诊断这个,但似乎大部分时间花在main-
这是相同的配置文件,但系统库取消隐藏:

这些消息都不是我能识别的,所以我不确定如何开始调试我的性能问题.
我在别处读到我应该检查主代码是否在主线程上执行.但是,以下更改并未改进任何内容:
dispatch_async(dispatch_get_main_queue(), ^{
SCAAboutController2 *controller = [[SCAAboutController2 alloc] initWithNibName:nil bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
[self presentViewController:navController animated:YES completion:nil];
});
Run Code Online (Sandbox Code Playgroud)
我很快就没有关于如何进步的想法.我如何进一步调查,和/或可能是缓慢呈现的根本原因?
编辑
一些令人困惑的发现:
viewWillDisappear在呈现控制器中没有添加任何内容.编辑2
我发现问题集中在我在主(呈现)控制器中添加的一系列布局约束.具体来说,我遍历一些子控制器(类型teamController)并添加约束:
[self.browser addConstraint:[NSLayoutConstraint constraintWithItem:teamController.view
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self.browser
attribute:NSLayoutAttributeWidth
multiplier:1
constant:0]];
Run Code Online (Sandbox Code Playgroud)
只有10个子控制器.同样奇怪:如果我使用以下代码,我就没有这样的问题了:
[self.browser.contentView addConstraint:[NSLayoutConstraint constraintWithItem:teamController.view
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:200]];
Run Code Online (Sandbox Code Playgroud)
我仍然非常困惑为什么这些约束会导致另一个模态的呈现挂起,以及为什么约束的一个变体表现出与另一个不同的显着不同.
ios ×9
cocoa-touch ×5
uiview ×4
autolayout ×3
objective-c ×2
app-store ×1
cocoa ×1
core-data ×1
icons ×1
instruments ×1
ios7 ×1
iphone ×1
nsarray ×1
nsset ×1
performance ×1
uibutton ×1
uitextfield ×1
uitoolbar ×1