我有一个带有UICollectionViewFlowLayout的简单UICollectionView,它使用autolayout来允许自定义单元格.在静态布局中,事情很有效,但是当我插入或删除单元格时,单元格会调整为估计的大小:
[self.collectionView performBatchUpdates:^{
[self.collectionView insertItemsAtIndexPaths:@[indexPath]];
} completion:nil];
Run Code Online (Sandbox Code Playgroud)
除了设置估计的大小,像这样:
layout.estimatedItemSize = CGSizeMake(88.0, 88.0);
Run Code Online (Sandbox Code Playgroud)
我在集合视图中没有做任何奇特的事情.一切都是使用故事板设置的.
我怎样才能避免这种大小调整?我只针对iOS 8.0及以上,因此应该支持它.

在iOS 6上,我的UITableView的节索引将在表视图的高度均匀分布其所有项目.在iOS 7中,所有项目都在中间聚集在一起,使得项目难以点击.有没有办法将它们分开?
我在iOS 5上使用最新的Facebook SDK.我可以使用SSO成功验证用户身份,然后我尝试共享这样的链接:
NSString *appId = [[[NSBundle mainBundle] infoDictionary]
objectForKey:TSFacebookAppID];
NSMutableDictionary* params =
[NSMutableDictionary dictionaryWithObjectsAndKeys:
appId, @"app_id",
[url absoluteString], @"link
title, @"caption",
body, @"description",
nil];
[facebook dialog:@"feed" andParams:params andDelegate:self];
Run Code Online (Sandbox Code Playgroud)
我第一次尝试这个时,对话框出现并立即关闭,调用对话框:didFailWithError:错误委托方法.错误是:
错误域= NSURLErrorDomain代码= -999"操作无法完成.(NSURLErrorDomain错误-999.)"UserInfo = 0x98f2ab0 {NSErrorFailingURLKey = https://m.facebook.com/dialog/feed?link=http%3A %2F%2Fwww.thescore.com%2Fhome%2Farticles%2F184248&描述=纳达尔%20pulls%20out%20of%20Paris%20to%20focus%20on%20ATP%20finals&的access_token = BAABw00HZB06cBALT57lZCM24N4EOtPpOQeCgl7oLUvbHFR0ZAlwgAbPHQ7HANmlBE0aUKVNDmWNYsEqB0wXq28vm4D18T5hLTVDK3x2WjnVjgIVl75RPoOszSB21f4ZD&字幕=文章%20from%20ScoreMobile%20for%20iPhone&APP_ID = 124052647629735&REDIRECT_URI = fbconnect %3A%2F%2Fsuccess&sdk = 2&display = touch,NSErrorFailingURLStringKey = https://m.facebook.com/dialog/feed?link=http%3A%2F%2Fwww.thescore.com%2Fhome%2Farticles%2F184248&description=Nadal%20pulls %20out%20of%20Paris%20to%20focus%20on%20ATP%20finals&=的access_token&BAABw00HZB06cBALT57lZCM24N4EOtPpOQeCgl7oLUvbHFR0ZAlwgAbPHQ7HANmlBE0aUKVNDmWNYsEqB0wXq28vm4D18T5hLTVDK3x2WjnVjgIVl75RPoOszSB21f4ZD字幕=文章%20from%20ScoreMobile%20for%20iPh one&app_id = 124052647629735&redirect_uri = fbconnect%3A%2F%2Fsuccess&sdk = 2&display = touch }
但是,随后尝试共享链接工作正常.
我有一个UIPageViewController,里面有一个简单的UIViewController.
如果UIViewController没有子视图,则其视图在旋转时可以正确调整大小.(纯绿色背景).

如果UIViewController具有带固定帧的子视图,则其视图在旋转时可以正确调整大小.(与角落的黄色正方形的坚实绿色背景).

如果UIViewController有一个子视图,其自动布局约束设置为填充其超级视图,则其视图在旋转时不再正确调整大小.(纯黄色背景,UIPageViewController的红色背景可见).我使用的自动布局代码是:
UIView *v = [[UIView alloc] init];
[v setTranslatesAutoresizingMaskIntoConstraints:NO];
[v setBackgroundColor:[UIColor yellowColor]];
[[self view] addSubview:v];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(v);
NSArray *cs = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[v]|" options:0 metrics:nil views:viewsDictionary];
[[self view] addConstraints:cs];
cs = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v]|" options:0 metrics:nil views:viewsDictionary];
[[self view] addConstraints:cs];
Run Code Online (Sandbox Code Playgroud)

为什么子视图的自动布局会影响其超级视图?只有当它包含在UIPageViewController中时才会发生这种情况.
我们遇到了一个奇怪的崩溃,其中UIImagePNGRepresentation()有时会导致png_error调用.我们无法在内部任何设备上重现此错误.
以下是我们的HockeyApp崩溃日志中的堆栈跟踪示例:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x3167132c __pthread_kill + 8
1 libsystem_c.dylib 0x33d6729f abort + 94
2 ImageIO 0x346c38bf png_error + 114
3 ImageIO 0x346c2fe3 png_write_end + 46
4 ImageIO 0x346bf069 writeOnePng + 2260
5 ImageIO 0x346be78b _CGImagePluginWritePNG + 82
6 ImageIO 0x346be6fd CGImageDestinationFinalize + 132
7 UIKit 0x31346e23 UIImagePNGRepresentation + 274
Run Code Online (Sandbox Code Playgroud)
我们只在运行iOS 5.1及更高版本的设备上看到此崩溃日志.我们实际上已经从iOS 6崩溃了,所以这个bug还没有修复.
我编写了一个测试应用程序,可下载超过16,000个可能的图像,我们的应用程序可以显示这些图像,所有这些图像都可以下载并保存到磁盘而没有任何问题.对这个要点的一些回应暗示这个问题可能是由于图像损坏引起的,但看到我如何下载超过16,000张图片而且从未出现过问题,我认为不会出现这种情况.
我正在研究的最新假设是,以某种方式下载的数据已损坏,因此正在创建损坏的UIImage.但是,所有创建损坏的UIImage的尝试都失败了.Apple似乎为UIImage创建了一个健壮的构造函数,这样我传入的任何无效内容都会导致从构造函数返回nil.
UIImagePNGRepresentation有没有其他人经历过这样的事情?
如果我有一个UIWebViewwith mediaPlaybackRequiresUserAction = YES,那么稍后在我的应用程序中创建一个新的UIWebView并设置mediaPlaybackRequiresUserAction = NO它,它也会在第一个实例上更改该属性的值.
例如,我有一个UIWebView然后呈现第二个UIWebView模态(对于广告),更改mediaPlaybackRequiresUserAction模态webView会影响呈现UIWebView.
任何想法为什么会这样?都是UIWebViews由单个实例支持的吗?
链接到示例项目在这里.
我有一个使用关联类型的协议,如下所示:
protocol Populatable {
typealias T
func populateWith(object: T)
}
Run Code Online (Sandbox Code Playgroud)
和实现协议的类:
class DateRowType: Populatable {
func populateWith(object: NSDate) {
print(object.description)
}
}
class StringRowType : Populatable {
func populateWith(object: String) {
print(object)
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试投射或测试一致性时,像这样:
let drt = DateRowType()
let srt = StringRowType()
let rowTypes = [drt, srt]
let data = [NSDate(), "foo"]
for (i, p: Populatable) in enumerate(rowTypes) {
p.populateWith(data[i])
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Protocol'Populatable'只能用作通用约束,因为它具有Self或相关类型要求
测试对象是否符合Populatable协议的正确方法是什么?
注意:尝试此操作所需的所有代码都包含在问题中,只需将代码块复制到操场中即可.
ios ×5
autolayout ×2
iphone ×2
dialog ×1
generics ×1
image ×1
ios5.1 ×1
ios7 ×1
ios8 ×1
objective-c ×1
png ×1
rotation ×1
swift ×1
uitableview ×1
uiwebview ×1