小编Dat*_*ris的帖子

UICollectionView不会在前几个项目上滚动到底部

我一直在尝试创建一个可以重用的聊天界面.我差不多完成了实现,但有些事情让我不禁烦恼.如果我在第一次加载界面时开始加载像gif这样的消息,你可以看到在第4条消息之后有3条消息没有滚动到底部.第8个是第一个最终滚动的.这取决于屏幕尺寸.在iPhone 6s测试设备上,它到达第9条消息,即滚动的消息.

我正在使用内容插入作为保持集合视图可见的方法,每次底部的UIToolbar框架更改时运行以下代码

toolBar.inputAccessoryViewFrameChanged = {(rect: CGRect) in Void()
    let navigationAndStatusHeight = self.navigationController != nil && self.navigationController!.navigationBar.isTranslucent ? self.navigationController!.navigationBar.frame.size.height + UIApplication.shared.statusBarFrame.height : 0
    self.collectionView.contentInset = UIEdgeInsets(top: navigationAndStatusHeight + 8, left: 8, bottom: UIScreen.main.bounds.height - rect.origin.y + 8, right: 8)
    self.collectionView.scrollIndicatorInsets.bottom = UIScreen.main.bounds.height - rect.origin.y
}
Run Code Online (Sandbox Code Playgroud)

每次插入新消息时都会运行此代码:

func insertNewMessage(){
    self.collectionView.performBatchUpdates({
        self.collectionView.insertItems(at: [NSIndexPath(item: self.numberOfMessages() - 1, section: 0) as IndexPath])
        }) { (Bool) in
        self.scrollToBottom(animated: true)
    }
}
Run Code Online (Sandbox Code Playgroud)

scrollToBottom函数是:

func scrollToBottom(animated: Bool){
    guard self.numberOfMessages() > 0 else{
        return
    }
    self.collectionView.scrollToItem(at: IndexPath(item: self.numberOfMessages() …
Run Code Online (Sandbox Code Playgroud)

iphone ios uicollectionview swift ios10

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

如何在iOS swift中使用完成处理程序正确记录方法

我正在记录我公司的iOS应用程序的代码,现在我转向了具有完成处理程序的方法.是否有记录完成处理程序的特定方法,或者我应该将其作为参数的一部分?

例如:

/**
Description
- Parameters:
     - parameter1: description
     - parameter2: description
     - completion: description
*/
Run Code Online (Sandbox Code Playgroud)

这是正确的方式还是有另一种更好的方法?或者它应该在文档的"返回"部分?

谢谢

documentation ios swift

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

标签 统计

ios ×2

swift ×2

documentation ×1

ios10 ×1

iphone ×1

uicollectionview ×1