我的代码:
DataService.dataService.fetchDataFromServer { (channel) in
self.channels.append(channel)
let indexPath = IndexPath(item: self.channels.count - 1, section: 0)
self.collectionView?.insertItems(at: [indexPath])
}
Run Code Online (Sandbox Code Playgroud)
从服务器获取数据功能:
func fetchDataFromServer(callBack: @escaping (Channel) -> ()) {
DataService.dataService.CHANNEL_REF.observe(.childAdded, with: { (snapshot) in
let channel = Channel(key: snapshot.key, snapshot: snapshot.value as! Dictionary<String, AnyObject>)
callBack(channel)
})
}
Run Code Online (Sandbox Code Playgroud)
项目数量部分:
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of items
return 0
}
Run Code Online (Sandbox Code Playgroud)
完整错误:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to insert …Run Code Online (Sandbox Code Playgroud) 我在 tableView 单元格中有一个 collectionView。我想点击 collectionView 单元格并使用传入的信息转到 detailTableView。我没有很多工作。做了一些研究,它指出 tableView 单元格既没有故事板也没有导航控制器。我如何能够将数据传递到 detailTableView。这是我的实现,可能不正确
class PopularTableViewCell: UITableViewCell {
var books = [CKRecord]()
var detailViewController: DetailViewController!
}
extension PopularTableViewCell: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let record = books[indexPath.row]
let storyBoard = UIStoryboard(name: "Home", bundle: nil)
if let detailVC = storyBoard.instantiateViewController(withIdentifier: "DetailVC") as? DetailViewController {
detailVC.bookRecord = record
detailViewController.navigationController?.pushViewController(detailVC, animated: true)
}
}
}
Run Code Online (Sandbox Code Playgroud) uitableview pushviewcontroller ios uicollectionviewcell swift
我正在使用从 Firebase 加载的 URL 填充集合视图。但是当我退出视图或向上滚动集合视图时,我无法让视频暂停。当我使用导航控制器返回时,我仍然可以听到后台播放的视频。然后当我再次进入视图时,视频开始播放,但第一个从未完成。
这是我的视图控制器。有小费吗?谢谢你!我还是 Swift 的新手,所以请原谅我的无知。
import UIKit
import AVKit
import AVFoundation
import Firebase
import FirebaseDatabase
import SDWebImage
class ComedyViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
var avPlayer = AVPlayer()
var avPlayerLayer = AVPlayerLayer()
@IBOutlet weak var comedyCollectionView: UICollectionView!
var comedyVideoArray = [ComedyModel]()
var comedyDBRef: DatabaseReference! {
return Database.database().reference().child("comedy")
}
override func viewDidLoad() {
super.viewDidLoad()
loadComedyDB()
}
func loadComedyDB() {
comedyDBRef.observe(DataEventType.value, with: { (snapshot) in
if snapshot.childrenCount > 0 {
self.comedyVideoArray.removeAll()
for comedyData in snapshot.children.allObjects as! [DataSnapshot] {
let comedyObject …Run Code Online (Sandbox Code Playgroud) 我已经看到了类似问题的其他一些答案,但即使进行了一些调整,这些解决方案都对我不起作用。
正如标题所示,我希望我的UICollectionViewCells 有圆角和阴影(或除了顶部之外的所有侧面都有阴影)。到目前为止,我所做的是将两个视图添加到我的UICollectionViewCell-中mainView,它显示单元格的必要内容并具有圆角,并且shadowView,它具有阴影。两个视图都不是另一个视图的子视图,它们一起存在于同一个单元格中。它们的尺寸完全相同,并且mainView明显显示在 的顶部shadowView。这是我当前的代码实现:
let mainView = cell.viewWithTag(1003) as! UIView
mainView.layer.cornerRadius = 10.0
mainView.layer.borderWidth = 1.0
mainView.layer.borderColor = UIColor.clear.cgColor
mainView.layer.masksToBounds = true
let shadowView = cell.viewWithTag(1002) as! UIView
shadowView.layer.shadowColor = UIColor.black.cgColor
shadowView.layer.shadowOffset = CGSize(width: 0, height: 2.0)
shadowView.layer.shadowRadius = 2.0
shadowView.layer.shadowOpacity = 0.5
shadowView.layer.masksToBounds = false
shadowView.layer.shadowPath = UIBezierPath(roundedRect: shadowView.bounds, cornerRadius: mainView.layer.cornerRadius).cgPath
Run Code Online (Sandbox Code Playgroud)
以下是这段代码产生的结果:
有人会认为mainView它的角不够圆,阴影不够大。
然而,在删除 的背景shadowView并将其设置UICollectionView为黑色后,您可以看到 的mainView角实际上非常圆滑:

所以这意味着问题在于 的shadowView …
我在设置渐变颜色以在集合视图中查看时遇到此问题
当它第一次绘制时很好。但是当我选择一些选项并重新加载集合时,它会像第二张图片一样发生。
viccalexander/变色龙 ( https://github.com/viccalexander/Chameleon )
首先,不确定标题是否正确或提供了最好的描述,但我不确定还可以使用什么。
所以,我正在开发一个应用程序,但我在实现 UI 时遇到了卡住的部分。基本上,我有一个 VC(下图),它可以根据我从 JSON 文件中获得的信息进行自我定位。
问题是我需要在上侧有一个类似轮播的菜单,其中包含未定义数量的单元格(同样,取决于我从 JSON 文件中获得的内容)。我决定为此使用 UICollectionView 并且我设法毫无问题地实现了基础知识。
但这是我卡住的部分:
我试图找到类似的东西,但也许我没有在寻找正确的东西,因为我能找到的只是按单元格而不是屏幕分页 UICollectionView
另外,老实说,我从未见过具有这种行为的应用程序/ UICollectionView。
我在下面发布了部分代码,但它并没有多大帮助,因为它只是标准的 UICollectionView 方法。
有什么建议?
class PreSignupDataVC : UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource
@IBOutlet weak var cvQuestions: UICollectionView!
var questionCell : PreSignupDataQuestionCellVC!
var screenData : Array<PreSignupScreenData> = Array<PreSignupScreenData>()
var pvDataSource : [String] = []
var numberOfComponents : Int = 0
var numberOfRowsInComponent : Int = 0
var currentScreen : Int = 1
var selectedType : Int?
var selectedCell : …Run Code Online (Sandbox Code Playgroud) uipickerview scroll-paging uicollectionview uicollectionviewcell swift
尝试创建自定义单元格,但是当我在单元格collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath)中添加标签时不起作用。
没有标签单元格 UI:
iPad 模拟器 UI 是:
但是当我在单元格中添加标签时:
iPad 模拟器 UI 变为:
在UICollectionViewDelegateFlowLayout方法中:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let emptySpace = 87*2 + 10
let remainingWidth = Int(self.view.frame.width) - emptySpace
return CGSize(width: remainingWidth/2, height: remainingWidth/2)
}
Run Code Online (Sandbox Code Playgroud) 我发现了一些奇怪的东西。
我创建了一个自定义 UICollectionViewCell 并在其中创建了一个标签。
我只对标签的顶部、前导和底部应用了自动布局。
class TestCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var label: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
}
Run Code Online (Sandbox Code Playgroud)
如果文本很长,它会像下面一样从屏幕上剪下来。
如果文本太长,我希望文本仅显示为“...”。
所以我像这样应用了traling自动布局。
然后, collectionViewCell 的宽度被破坏了。
这是我的代码。
我已经设置了委托,数据源。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension ViewController: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 20
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? TestCollectionViewCell else { return …Run Code Online (Sandbox Code Playgroud) 我有一个 UICollectionView,我想让它显示 3 个自定义单元格。
我已阅读文档,但无法解决此问题。
我有什么遗漏的吗?
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 1
}
Run Code Online (Sandbox Code Playgroud)
我尝试将 return 1 更改为 3 以使 3 个自定义单元格出现,但它只使第一个自定义单元格出现 3 次。
我创建了一个视频并链接了下面的视频来解释我的情况。
https://www.loom.com/share/9b5802d6cc7b4f9a93c55b4cf7d435bb
编辑我使用了@Asad Farooq 方法,它似乎对我有用。我添加了如下所示的 CollectionView,现在我可以制作自定义单元格!
if(indexPath.item==0)
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "DailyCollectionViewCell", for: indexPath) as! DailyCollectionViewCell
return cell
}
if(indexPath.item==1)
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "WeeklyCollectionViewCell", for: indexPath) as! WeeklyCollectionViewCell
return cell
}
else {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MonthlyCollectionViewCell", for: indexPath) as! MonthlyCollectionViewCell
return cell
}
}
Run Code Online (Sandbox Code Playgroud) 我是 swift 新手,我正在尝试更改 UICollectionView 的单元格背景颜色,但它不起作用我的代码在 cellForItemAt 中是这样的
if(cell.isSelected){
cell.backgroundColor = UIColor.green
}else{
cell.backgroundColor = UIColor.clear
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以仅将选定的单元格颜色更改为绿色,而将其他单元格颜色更改为清除 提前致谢!
swift ×10
ios ×8
autolayout ×1
avplayer ×1
chameleon ×1
gradient ×1
indexpath ×1
uipickerview ×1
uitableview ×1
uiview ×1
xcode ×1