小编Mar*_*ubé的帖子

CSStickyHeaderFlowLayout标题框架

编辑:我已经创建了一个非常小的应用程序,完美地代表了问题.https://drive.google.com/file/d/0B6sI4Feh1HJUb3pGa2pBUmY4QW8/view?usp=sharing

在示例应用程序中,我们只需向下滚动,然后按顶部栏上的按钮即可查看我遇到的问题


我使用https://github.com/jamztang/CSStickyHeaderFlowLayout在我的集合视图中有粘性标题行为(如默认的UITableView).

滚动浏览集合视图时,它的效果非常好.我在collectionview外面有一个搜索栏,允许用户使用搜索文本过滤数据,每次用户输入一个字母时,我都会使用找到的数据刷新collectionview的数据.

问题是让我们说集合视图中当前有4个部分,它在底部完全滚动.当我输入一个certian字母时,它会过滤除一个项目之外的所有内容(带有一个标题).然后,内容大小会针对集合视图进行更改并显示正确的数据,但标题太低(请参见屏幕截图).

我已经调查了flowlayout内部和内部layoutAttributesForElementsInRect,我看到它实际上将框架的原点Y设置为0(就像它应该是),但似乎collectionview不使用此值并使用前一个(当收集时)视图向下滚动).

知道什么可能导致UICollectionView不在内部使用所需的框架layoutAttributesForElementsInRect

看错了标题

ipad ios uicollectionview uicollectionviewlayout

11
推荐指数
1
解决办法
513
查看次数

OCMock和UIViewController

我目前正在研究如何有效地将一些单元测试添加到我的应用程序的ViewControllers中.到目前为止,它工作得很好,直到我尝试了特定的视图控制器呈现另一个.

我正在使用OCMock和XCTest.测试如下

id partialMock = OCMPartialMock([TestViewController class]);
[partialMock doSomeStuff];
OCMVerify([partialMock presentViewController:[OCMArg any] animated:[OCMArg any] completion:[OCMArg any]]);
Run Code Online (Sandbox Code Playgroud)

如您所见,我只想验证是否presentViewControllerdoSomeStuff函数内调用了测试的视图控制器.请注意,给出的示例是我目前拥有的简化版本.主要区别在于我正在验证参数viewController是另一个模拟对象.

问题是因为doSomeStuff方法没有存根,然后调用被转发到TestViewController实例,然后实例调用presentViewController,然后不触发partialMock的验证.

有什么我想念的吗?或者我真正想要实现的是什么?

ocmock uiviewcontroller ios

5
推荐指数
1
解决办法
397
查看次数

MPMoviePlayerController和基于Auth的HLS后端服务器

我目前正在iOS应用程序中提供视频MPMoviePlayerController.这些文件从需要身份验证的后端服务器流式传输.它是Authorization HTTP Header中基于密钥的身份验证集.

它曾经与单个视频文件完美配合.现在我们正在尝试实现HLS自适应流媒体,我们面临着一堵墙.我目前正在使用自定义NSURLProtocol子类来捕获对后端服务器发出的请求并注入适当的Authorization标头.对于HLS,它根本不起作用.

当我们查看服务器日志时,我们清楚地看到对m3u8文件的第一个请求工作正常.然后所有后续调用(其他m3u8文件和ts也)被禁止403.它似乎MPMoviePlayerControllerNSURLProtocol用于其他文件.(旁注:它确实适用于模拟器思想,但不适用于让我认为两者都没有以相同方式实现的物理设备).

MPMoviePlayerController实例化

self.videoController = [[MPMoviePlayerController alloc] initWithContentURL:video.videoURL];
Run Code Online (Sandbox Code Playgroud)

URL协议拦截

+ (NSURLRequest *) canonicalRequestForRequest:(NSURLRequest *)request {
    NSMutableURLRequest *newRequest = request.mutableCopy;
    [newRequest setValue:@"HIDDEN" forHTTPHeaderField:@"Authorization"];
    return newRequest;
}
Run Code Online (Sandbox Code Playgroud)

任何想法,建议,解决方案?

mpmovieplayercontroller http-live-streaming ios

5
推荐指数
1
解决办法
453
查看次数

NSOperation 依赖和completionBlock

我们有一个关于 NSOperationQueue 的简单问题,这是一个简单的操作逻辑:

self.queue = [[NSOperationQueue alloc] init];

NSOperation *operationA = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"- Running operation A");
    [NSThread sleepForTimeInterval:1.2];
    NSLog(@"- Done operation A");
}];

NSOperation *operationB = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"- Running operation B");
    [NSThread sleepForTimeInterval:2];
    NSLog(@"- Done operation B");
}];

[operationA setCompletionBlock:^{
    NSLog(@"-- Completion Block A");
}];

[operationB setCompletionBlock:^{
    NSLog(@"-- Completion Block B");
}];

[operationB addDependency:operationA];
[self.queue addOperations:@[operationA, operationB] waitUntilFinished:NO];
Run Code Online (Sandbox Code Playgroud)

这是最终的输出

2015-12-21 14:59:57.463 SampleProject[18046:310901] - Running operation A
2015-12-21 14:59:58.664 SampleProject[18046:310901] - Done operation A
2015-12-21 14:59:58.664 SampleProject[18046:310900] - Running …
Run Code Online (Sandbox Code Playgroud)

objective-c nsoperation nsoperationqueue

4
推荐指数
1
解决办法
1306
查看次数

顶部安全区域约束动画

设置

  1. 一个简单的视图控制器,在导航项中设置了 UISearchController 以在搜索栏中使用 iOS 11 的搜索功能。

  2. 任何具有顶部约束的视图 SafeArea.Top

问题

当呈现搜索控制器时,导航栏因为它的大小变化而被动画化,但对顶部区域的约束不遵循动画。

如果有人知道我能做什么(现在我想我唯一的选择是禁用hidesNavigationBarDuringPresentation以避免动画)

请参阅下面的示例,其中我激活了慢速动画以便于理解:

在此处输入图片说明

uinavigationitem uisearchcontroller ios11

4
推荐指数
1
解决办法
715
查看次数