在 Swift 中为 iOS 设计一个填字游戏网格

Posted

技术标签:

【中文标题】在 Swift 中为 iOS 设计一个填字游戏网格【英文标题】:Designing a Crossword Grid for iOS in Swift 【发布时间】:2017-12-28 13:10:32 【问题描述】:

我为安卓开发了一个填字游戏应用程序,并设法使用安卓支持库和按钮 (This one) 中提供的GridView 类创建网格。

我尝试将 UICollectionView 与自定义布局一起使用,但它似乎是为其他目的而设计的。有谁知道我可以用什么在 ios 中创建相同(或类似)的东西?

是否有一个库可以更轻松地创建像这样的固定表?

注意:列数和行数是固定的10x10

我更喜欢使用 Swift 而不是 Obj-C,而且我还不关心键盘和菜单。

非常感谢

我附上安卓应用的截图。

对不起我的英语,它仍然很糟糕:)

【问题讨论】:

UICollectionView 是满足您要求的完美选择。你在哪里被 UICollectionView 卡住了? 【参考方案1】:

UIViewController 应该可以满足您的需求。试试这样的:

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout 

   var collectionView: UICollectionView!
   var gridSize: CGFloat = 10

   override func viewDidLoad() 
       super.viewDidLoad()

       let layout = UICollectionViewFlowLayout()
       layout.minimumInteritemSpacing = 1
       layout.minimumLineSpacing = 1

       collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 0, height: 0), collectionViewLayout: layout)
       collectionView.dataSource = self
       collectionView.delegate = self
       collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")

       collectionView.translatesAutoresizingMaskIntoConstraints = false
       view.addSubview(collectionView)

       view.addConstraints([
           NSLayoutConstraint(item: collectionView, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 0),
           NSLayoutConstraint(item: collectionView, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1.0, constant: 0),
           NSLayoutConstraint(item: collectionView, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1.0, constant: 20),
           NSLayoutConstraint(item: collectionView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: view.frame.width) ])

   

   override func didReceiveMemoryWarning() 
       super.didReceiveMemoryWarning()
   

   func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
       return Int(pow(Double(gridSize), 2))
   

   func numberOfSections(in collectionView: UICollectionView) -> Int 
       return 1
   

   func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
       let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)
       // Set up your cells here
       return cell
   

   func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
       let size = view.frame.width / gridSize - 1
       return CGSize(width: size, height: size)
   


设置单元格的backgroundColor 将为您提供:

【讨论】:

以上是关于在 Swift 中为 iOS 设计一个填字游戏网格的主要内容,如果未能解决你的问题,请参考以下文章

如何为填字游戏获得多个解决方案?

程序员的算法趣题Q66: 设计填字游戏

如何引用 iOS UITextFields

解决填字游戏[关闭]

在 swift iOS 中为 3 个点设置动画

如何使用 GridView 或 TableView 在颤振中制作填字游戏