我想在我的应用中创建网格线方法,并允许用户打开/关闭网格视图。它不需要任何类型的触摸检测或与之相关的逻辑。只是网格线,供用户查看和打开/关闭它们。对此的明显解决方案是在我的视图中添加网格图像,并在需要时使用imageview显示它。但这是一个我不能采取的选择。我必须以编程方式执行此操作。谢谢你的时间。我正计划实施的image。有任何想法吗 ?核心图形或许多uiviews?
答案 0 :(得分:1)
对UIView进行子类化并在其中创建单独的2个循环。一个用于垂直线,一个用于水平线。 在垂直线循环中,创建UIView的1px宽和768px高。在水平方向上,创建1px高和1024px宽。
要隐藏和显示它,只需将子视图的隐藏属性切换为YES或NO。
您也可以不使用子类,只需使用标准的UIView。
答案 1 :(得分:1)
结束使用:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"sample.png"]];
答案 2 :(得分:0)
我已将此用于 Swift3
class GridView: UIView {
var numberOfColumns: Int = 2
var numberOfRows: Int = 2
var lineWidth: CGFloat = 1.0
var lineColor: UIColor = UIColor.white
override func draw(_ rect: CGRect) {
if let context = UIGraphicsGetCurrentContext() {
context.setLineWidth(lineWidth)
context.setStrokeColor(UIColor.white.cgColor)
let columnWidth = Int(rect.width) / (numberOfColumns + 1)
for i in 1...numberOfColumns {
var startPoint = CGPoint.zero
var endPoint = CGPoint.zero
startPoint.x = CGFloat(columnWidth * i)
startPoint.y = 0.0
endPoint.x = startPoint.x
endPoint.y = frame.size.height
context.move(to: CGPoint(x: startPoint.x, y: startPoint.y))
context.addLine(to: CGPoint(x: endPoint.x, y: endPoint.y))
context.strokePath()
}
let rowHeight = Int(rect.height) / (numberOfRows + 1)
for j in 1...numberOfRows {
var startPoint = CGPoint.zero
var endPoint = CGPoint.zero
startPoint.x = 0.0
startPoint.y = CGFloat(rowHeight * j)
endPoint.x = frame.size.width
endPoint.y = startPoint.y
context.move(to: CGPoint(x: startPoint.x, y: startPoint.y))
context.addLine(to: CGPoint(x: endPoint.x, y: endPoint.y))
context.strokePath()
}
}
}
}
并将其背景颜色设置为clear
。
代码也存在here