使用 Swift Package Manager 将 FDChessboardView 添加到你的项目中。在 Xcode 中,只需:File > Swift Packages > Add Package Dependency... 即可完成。 以下显示了旧项目的替代安装选项。
如果您已经在使用 CocoaPods,只需将 'FDChessboardView' 添加到您的 Podfile
,然后运行 pod install
。
如果您已经在使用 Carthage,只需添加到您的 Cartfile
github "fulldecent/FDChessboardView" ~> 0.1
然后运行 carthage update
来构建框架,并将构建的 FDChessboardView.framework 拖到您的 Xcode 项目中。
导入项目并实现数据源
import FDChessboardView
public protocol FDChessboardViewDataSource: class {
/// What piece is on the square?
func chessboardView(_ board: FDChessboardView, pieceForSquare square: FDChessboardSquare) -> FDChessboardPiece?
/// The last move
func chessboardViewLastMove(_ board: FDChessboardView) -> (from:FDChessboardSquare, to:FDChessboardSquare)?
/// The premove
func chessboardViewPremove(_ board: FDChessboardView) -> (from:FDChessboardSquare, to:FDChessboardSquare)?
}
如果您的应用程序允许移动棋子,请实现一个委托
public protocol FDChessboardViewDelegate: class {
/// Where can this piece move to?
func chessboardView(_ board: FDChessboardView, legalDestinationsForPieceAtSquare from: FDChessboardSquare) -> [FDChessboardSquare]
/// Before a move happenes
func chessboardView(_ board: FDChessboardView, canMoveFrom from: FDChessboardSquare, to: FDChessboardSquare, withPromotion promotion: FDChessboardPiece?) -> Bool
/// After a move happened
func chessboardView(_ board: FDChessboardView, didMoveFrom from: FDChessboardSquare, to: FDChessboardSquare, withPromotion promotion: FDChessboardPiece?)
}
然后您可以自定义视图或调用某些操作
/// The location of a square on a chess board
public struct FDChessboardSquare: Hashable {
/// From 0...7 (a...h)
public let file: Int
/// From 0...7 (white king starting position to black king starting position)
public let rank: Int
}
/// The pieces on a chess board
public enum FDChessboardPiece: String {
case WhitePawn
case BlackPawn
case WhiteKnight
case BlackKnight
case WhiteBishop
case BlackBishop
case WhiteRook
case BlackRook
case WhiteQueen
case BlackQueen
case WhiteKing
case BlackKing
}
/// Display for a chess board
@IBDesignable open class FDChessboardView: UIView {
@IBInspectable open var lightBackgroundColor: UIColor
@IBInspectable open var darkBackgroundColor: UIColor
open var targetBackgroundColor: UIColor
open var legalBackgroundColor: UIColor
open var lastMoveColor: UIColor
open var premoveColor: UIColor
open weak var dataSource: FDChessboardViewDataSource?
open weak var delegate: FDChessboardViewDelegate?
open var doesAnimate: Bool
open var doesShowLegalSquares: Bool
open var doesShowLastMove: Bool
open var doesShowPremove: Bool
/// Add a piece onto the board
open func setPiece(_ piece: FDChessboardPiece?, forSquare square: FDChessboardSquare)
/// Repull all board information from data source
open func reloadData()
/// Move a piece on the board, clears any prior premove
open func move(_ piece: FDChessboardPiece, from: FDChessboardSquare, to: FDChessboardSquare, promotedTo promoted: FDChessboardPiece?)
/// Premove a piece on the board, clears any prior premove
open func premove(_ piece: FDChessboardPiece, from: FDChessboardSquare, to: FDChessboardSquare, promotedTo promoted: FDChessboardPiece?)
/// Removes any premove on the board
open func clearPremove()
/// Move a piece on the board, clears any prior premove
open func unmove(_ piece: FDChessboardPiece, from: FDChessboardSquare, to: FDChessboardSquare, promotedTo promoted: FDChessboardPiece?, capturing: FDChessboardPiece)
}
以下项目正在API中讨论并等待实现
另请参阅 Mac 版 Kibitz,它即将回归 https://github.com/fulldecent/kibitz
FDChessboardView 在 MIT 许可下可用。 有关更多信息,请参见 LICENSE 文件。