小编sim*_*ity的帖子

UITableView单元的动态高度问题(Swift)

可变长度的动态文本被注入tableview单元格标签.为了使tableview单元格的高度动态调整,我实现了viewDidLoad():

self.tableView.estimatedRowHeight = 88.0
self.tableView.rowHeight = UITableViewAutomaticDimension
Run Code Online (Sandbox Code Playgroud)

这适用于尚未UITableViewAutomaticDimention滚动到的单元格(在滚动到单元格时调用),但不适用于在加载具有数据的表格时最初在屏幕上呈现的单元格.

我试过简单地重新加载数据(如许多其他资源中所建议的):

self.tableView.reloadData()
Run Code Online (Sandbox Code Playgroud)

在这两个viewDidAppear()viewWillAppear(),这是无济于事.我迷了..有没有人知道如何让xcode渲染最初在屏幕上加载的单元格的动态高度?

如果有更好的替代方法,请告诉我.

xcode row-height uitableview ios swift

69
推荐指数
9
解决办法
10万
查看次数

NSSortDescriptor评估升序数字(Swift)

应用程序已contentid作为json文件中的数字字符串进入:

let contentid: AnyObject! = jsonFeed["contentid"]

let stream:Dictionary = [
   "contentId": contentid as! String,
]
Run Code Online (Sandbox Code Playgroud)

稍后将其保存到[NSManagedObject]:

var articles = [NSManagedObject]()

let entity =  NSEntityDescription.entityForName("Article", inManagedObjectContext: managedContext)
let article = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)

article.setValue(stream["contentId"], forKey: "contentid")

articles.append(article)
Run Code Online (Sandbox Code Playgroud)

最后,我使用NSSortDescriptor让Core Data以数字升序返回条目:

let sort = NSSortDescriptor(key: "contentid", ascending: true)
fetchRequest.sortDescriptors = [sort]
Run Code Online (Sandbox Code Playgroud)

但条目6 - 10返回为:10,6,7,8,9.使用NSSortDescriptor正确评估这些数字的正确方法是什么?

更新:

对于Swift版本,请参阅下面的Volker的答案.我最终使用:

let sort = NSSortDescriptor(key: "contentid", ascending: true, selector: "localizedStandardCompare:")
Run Code Online (Sandbox Code Playgroud)

它将编号的字符串评估为真整数.

更新:Swift 2:

选择器语法已更改,不再接受objc指针.谢谢user1828845.

let sort = NSSortDescriptor(key: "contentid", ascending: true, …

core-data nssortdescriptor ios swift

8
推荐指数
2
解决办法
5501
查看次数

使用Swift在Sprite Kit中构建棋盘游戏?

在使用Swift的Sprite Kit中,我正在尝试构建一个棋盘(实际上,它是一个象棋棋盘/瓦片网格).所以一般来说,我应该如何创建一个方形网格板?

我已经做了很多研究,并通过多维数组研究了类似棋盘的高级概念的一些例子,但它仍然没有真正解释如何在Sprite Kit中进行VISUALLY代表它,更重要的是,如何将可视化表示映射到多维数组中的字母+数字表示...

有什么想法吗?

如果有人能回答上述问题中的至少一点/部分,我们将不胜感激!非常感谢先进!

ios sprite-kit swift

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

UITableViewCell 大小与可选图像 (Swift)

我花了很长时间试图弄清楚这个问题:

我有一个UITableViewCell固定大小UIImage(250 x 250) 固定在单元格顶部View和一个UILabel可变文本大小的底部,其顶部固定在底部,底部固定UIImage在单元格的底部View

我有一个用例,其中图像并不总是得到保证,因此图像视图故意折叠到0高度,因此它不会破坏UILabel顶部固定的自动布局。

我认为这将允许UITableViewCell缩小到标签的大小,但相反,它保持默认高度,自动布局会拉伸标签的高度(以保持顶部和底部的固定),文本居中居中。

我用所有常见的犯罪嫌疑人,UITAbleViewAutomaticDimension以及estimatedRowHeight等等等等(你可能会认为第一!),它是无济于事。

我究竟做错了什么?

我确实看到了一些关于将IB 中约束的优先级更改为250而不是1000这样它们可能会中断的内容。而且还调整了一些参考UITableViewCell通过调用手动(跛脚和肮脏)requiredHeight()UILabel这打破了布局,所以我在做什么错在这里?谢谢!

interface-builder uitableview ios swift

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

didOutputSampleBuffer委托永远不会被调用(iOS/Swift 3)

我试图跟踪视频录制的样本缓冲率.

我有一个视图控制器AVCaptureFileOutputRecordingDelegateAVCaptureVideoDataOutputSampleBufferDelegate,然后设置像这样的缓冲器输出:

sessionQueue.async { [weak self] in
        if let `self` = self {
            let movieFileOutput = AVCaptureMovieFileOutput()

            let bufferQueue = DispatchQueue(label: "bufferRate", qos: .userInteractive, attributes: .concurrent)

            let theOutput = AVCaptureVideoDataOutput()
                theOutput.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString): NSNumber(value:kCVPixelFormatType_32BGRA)]
                theOutput.alwaysDiscardsLateVideoFrames = true
                theOutput.setSampleBufferDelegate(self, queue: bufferQueue)

            if self.session.canAddOutput(theOutput) {
                self.session.addOutput(theOutput)
                print("ADDED BUFFER OUTPUT")
            }

            if self.session.canAddOutput(movieFileOutput) {
                self.session.beginConfiguration()
                self.session.addOutput(movieFileOutput)
                self.session.sessionPreset = AVCaptureSessionPresetHigh
                if let connection = movieFileOutput.connection(withMediaType: AVMediaTypeVideo) {
                    if connection.isVideoStabilizationSupported {
                        connection.preferredVideoStabilizationMode = .auto
                    }
                }

                self.session.commitConfiguration()

                self.movieFileOutput = …
Run Code Online (Sandbox Code Playgroud)

ios avcapturesession swift

0
推荐指数
1
解决办法
746
查看次数

两个 AVPlayer 视频不同步 (Swift)

我有两个AVPlayer()项目播放相同持续时间(10 秒)的视频。目标是让它们循环并彼此保持同步。我将它们添加为相同的子层,UIView然后调用player.play()它们中的每一个。

但问题是,由于代码执行显然有最轻微的延迟,因为一个在另一个之后调用,视频不同步(虽然只有几毫秒,但很明显)。

正如我看到其他帖子所建议的那样,我没有创建 AVMutableComposition 的选项,那么无论如何要让两个独立的播放器真正保持同步并完全同时播放?

谢谢!

ios avplayer swift

0
推荐指数
1
解决办法
1320
查看次数