小编Ant*_*ine的帖子

如何在所有单元格周围的空白区域中接收UICollectionView上的触摸

我有一个UICollectionView有不同的项目.当我点击一个项目时,我使用:

 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

找出被触摸的内容然后基本上将该视图的alpha设置为0以隐藏它.一切正常.现在我想要做的是当你点击UICollectionViewCell所有视图周围的空白区域然后再次出现.我无法找到一种方法,可以让我知道细胞周围的白色空间何时被触摸.有没有一个好方法呢?我已经尝试设置手势识别器,但是当我这样做时,我的方法

 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

不叫.有没有办法实现手势识别器,并从那里确定是否轻敲了一个单元格,如果是这样隐藏该单元格,否则显示所有隐藏的单元格?谢谢.

objective-c uigesturerecognizer ios uicollectionview swift

14
推荐指数
3
解决办法
5002
查看次数

下载前获取 AVAssetDownloadTask 的大小

我目前正在使用 FairPlay 流实现离线流。因此,我正在使用AVAssetDownloadTask.

我想向用户提供有关开始下载的大小的反馈:

您确定要下载此流吗?下载需要 2.4GB,您目前还有 14GB 的空间

我已经检查过类似countOfBytesReceived和的属性,countOfBytesExpectedToReceive但这些不会返回正确的值。

let headRequest = NSMutableURLRequest(URL: asset.streamURL)
headRequest.HTTPMethod = "HEAD"
let sizeTask = NSURLSession.sharedSession().dataTaskWithRequest(headRequest) { (data, response, error) in
    print("Expected size is \(response?.expectedContentLength)")
}.resume()
Run Code Online (Sandbox Code Playgroud)

打印大小为 2464,最后大小为 3GB。

在下载过程中,我记录了上述属性:

func URLSession(session: NSURLSession, assetDownloadTask: AVAssetDownloadTask, didLoadTimeRange timeRange: CMTimeRange, totalTimeRangesLoaded loadedTimeRanges: [NSValue], timeRangeExpectedToLoad: CMTimeRange) {
    print("Downloaded \( convertFileSizeToMegabyte(Float(assetDownloadTask.countOfBytesReceived)))/\(convertFileSizeToMegabyte(Float(assetDownloadTask.countOfBytesExpectedToReceive))) MB")
}
Run Code Online (Sandbox Code Playgroud)

但这些保持为零:

已下载 0.0/0.0 MB

fairplay nsurlsession nsurlsessiondatatask avassetdownloadtask

7
推荐指数
1
解决办法
1421
查看次数

当将闭包作为参数传递时,ReactiveCocoa保留循环

我在Swift中使用ReactiveCocoa如下:

registerButton?.rac_signalForControlEvents(UIControlEvents.TouchUpInside).subscribeNextAs(registerButtonTapped)

private func registerButtonTapped(button: UIButton){
    // Method here
}
Run Code Online (Sandbox Code Playgroud)

这会创建一个保留周期.

我知道解决方案如下:

registerButton?.rac_signalForControlEvents(UIControlEvents.TouchUpInside).subscribeNextAs({ [weak self] (button:UIButton) in
    self?.registerButtonTapped(button)
})
Run Code Online (Sandbox Code Playgroud)

但这强制我使用subscribeNextAs块而不是更好的oneliner传递方法.

知道如何在没有保留周期的情况下使用oneliner吗?

reactive-cocoa swift

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

更改UINavigationBar后退按钮的后退位置

是否可以在自定义UINavigationBar子类中调整后退箭头的位置.这是必需的,因为具有自定义调整高度的导航栏中的位置是错误的.

uinavigationbar ios swift

2
推荐指数
1
解决办法
3716
查看次数