小编Sen*_*ior的帖子

具有自调整大小的单元格的UICollectionView在插入/移除动画期间调整单元格大小

我有一个带有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 autolayout uicollectionview ios8

26
推荐指数
1
解决办法
2034
查看次数

iOS 7上的UITableView部分索引间距

在iOS 6上,我的UITableView的节索引将在表视图的高度均匀分布其所有项目.在iOS 7中,所有项目都在中间聚集在一起,使得项目难以点击.有没有办法将它们分开?

iphone uitableview ios ios7

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

验证后的第一个对话框立即失败并关闭对话框

我在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 }

但是,随后尝试共享链接工作正常.

dialog facebook-ios-sdk

17
推荐指数
3
解决办法
9814
查看次数

UIPageViewController +自动布局旋转问题

我有一个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中时才会发生这种情况.

iphone rotation ios uipageviewcontroller autolayout

12
推荐指数
3
解决办法
4600
查看次数

仅在iOS 5.1+上的UIImagePNGRepresentation中的png_error

我们遇到了一个奇怪的崩溃,其中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有没有其他人经历过这样的事情?

png image ios ios5.1 uiimagepngrepresentation

10
推荐指数
1
解决办法
1422
查看次数

- [UIWebView setMediaPlaybackRequiresUserAction:]影响所有实例

如果我有一个UIWebViewwith mediaPlaybackRequiresUserAction = YES,那么稍后在我的应用程序中创建一个新的UIWebView并设置mediaPlaybackRequiresUserAction = NO它,它也会在第一个实例上更改该属性的值.

例如,我有一个UIWebView然后呈现第二个UIWebView模态(对于广告),更改mediaPlaybackRequiresUserAction模态webView会影响呈现UIWebView.

任何想法为什么会这样?都是UIWebViews由单个实例支持的吗?

链接到示例项目在这里.

objective-c uiwebview ios

8
推荐指数
1
解决办法
629
查看次数

测试协议与相关类型的一致性

我有一个使用关联类型的协议,如下所示:

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协议的正确方法是什么?

注意:尝试此操作所需的所有代码都包含在问题中,只需将代码块复制到操场中即可.

generics swift swift-protocols

6
推荐指数
1
解决办法
523
查看次数