【发布时间】:2018-09-01 07:55:13
【问题描述】:
如果有人听说过,我正在制作一个 2d 益智游戏(网格/棋盘)推箱子,下面是代码。我正在寻找一种显示板(图像数组)的方法。
func makeLevel() {
var cellImageView: [[UIImageView]] = []
var floorImageView: [[UIImageView]] = []
let cellWidth = 35
let cellHeight = 35
let x0 = 190 - 4 * cellWidth
let y0 = 300 - 4 * cellHeight
let imageForCellMarker: [Character: UIImage] = [
".": UIImage(named: "poopgoal30x30")!,
"#": UIImage(named: "wall30x30")!,
"$": UIImage(named: "box30x30")!,
"@": UIImage(named: "cat30x30")!,
"£": UIImage(named: "box30x30")!,
"&": UIImage(named: "cat30x30")!,
]
//Floor
for y in 0..<rows {
floorImageView.append([])
for x in 0..<cols {
let image = UIImage(named: "floor30x30")!
let frame = CGRect(x: x0 + x * cellWidth, y: y0 + y * cellHeight, width: cellWidth, height: cellHeight)
let imageView = UIImageView(frame: frame)
imageView.image = image
floorImageView[y].append(imageView)
view.addSubview(imageView)
}
}
//Level
for y in 0 ..< rows {
cellImageView.append([])
for x in 0 ..< cols {
let image = imageForCellMarker[gameBoard[y][x]]
let frame = CGRect(x: x0 + x * cellWidth, y: y0 + y * cellHeight, width: cellWidth, height: cellHeight)
let imageView = UIImageView(frame: frame)
imageView.image = image
cellImageView[y].append(imageView)
view.addSubview(imageView)
}
}
}
由于板子将在不同的行和列中取决于级别,所以我不能真正将它设置为视图中的恒定位置。因此,有没有哪位好心的 swift 专家会告诉我如何自动布局网格以使其适合所有设备?
【问题讨论】:
-
您的部分问题将是方向...例如,您希望“地板”图像在 iPhone 上以纵向还是横向显示?或者,更准确地说,在紧凑宽度/常规高度与常规宽度/紧凑高度?您可以使用自动布局管理类似“网格”的功能...但您需要描述/显示您期望的结果。
-
imgur.com/a/zHLOS 这是目前的样子。但在横向模式下,它只停留在左侧。对于更大的级别,它看起来像这样:imgur.com/a/ao0gm 最终我想要的是无论手机尺寸、纵向还是横向,它都应该保持在中心。
-
谷歌 snapkit。它有助于以编程方式实现多个设备的自动布局
标签: swift uiimageview autolayout swift4 ios-autolayout