【发布时间】:2021-03-11 15:51:14
【问题描述】:
我正在创建一个自定义IBDesignable 控件,我想在其中绘制一组正方形。我有一个draw(_ rect:) 方法,它执行以下操作:
override func draw(_ rect: CGRect) {
// ... skipped ...
for i in 0 ..< 7 {
for j in 0 ... 6 {
let x = Double(i) * (cellSize + space)
let y = Double(j) * (cellSize + space)
let rectangle = CGRect(x: x, y: y, width: cellSize, height: cellSize)
let face = UIBezierPath(roundedRect: rectangle, cornerRadius: CGFloat(0))
face.fill()
}
}
}
当我将组件添加到界面构建器中时,这工作得很好,我可以看到方块。但是当我在模拟器中运行它时,它会绘制矩形,但 不是正方形:
这看起来很奇怪,因为width 等于height。即使我用线条画,它的工作方式也是一样的:
let face = UIBezierPath()
face.move(to: CGPoint(x: x, y: y))
face.addLine(to: CGPoint(x: x + cellSize, y: y))
face.addLine(to: CGPoint(x: x + cellSize, y: y + cellSize))
face.addLine(to: CGPoint(x: x, y: y + cellSize))
face.close()
或者如果我使用常规的非圆角矩形:
let face = UIBezierPath(rect: rectangle)
有什么想法可能是错的吗?
【问题讨论】:
标签: ios swift uibezierpath ibdesignable