2016-12-02 62 views
0

我有一个UIView子类。在Core Graphics中获取具有相同笔划的不同行

下面是如何重写绘制方法:

let path = UIBezierPath() 
path.lineWidth = 1 
path.move(to: CGPoint(x: rect.minX, y: rect.minY+1)) 
path.addLine(to: CGPoint(x: rect.maxX, y: rect.minY+1)) 
UIColor.lightGray.setStroke() 
path.stroke() 
path.close() 

但线出现时,视图呈现不同。 特别是

当view.frame.height小于superview.frame.height: view < superview

当view.frame.height比superview.frame.height更大: view > superview

灿弄清楚我做错了什么。

回答

1

假设您的代码在中绘制(_ rect:CGRect),请记住,矩形会有所不同。你的path.Movepath.AddLine调用引用此。你如何在超级视图中定位事物? AutoLayout或框架?

+0

是的,你的假设是正确的。我的代码在绘制(_ rect:CGRect)。我的观点定位如下 - > UIViewController.view包含一个UITableView.tableViewHeader = UIView - >这包含UIView-子类与AutoLayout定位。 – Anon

+0

那么,当贝塞尔路径不同时,每个时间贝塞尔路径的最高**实际**矩形Y值是多少?根据view.frame.height如何固定到超级视图,您可能会看到您编码的内容。另外,问题到底是什么?你是否得到相同的行,除了它是垂直“关闭x”,或其他? – dfd

+0

对于这两种情况,我都得到了相同的结果:(0.0,0.0,406.0,441.666666666667)。 UIViewSubclass固定在UITableView.tableViewHeader的视图的顶部,左侧和右侧,但未绑定在底部。问题是线条的粗细。一个似乎比另一个更厚 - 尽管两者应该具有相同的线宽(1)。 – Anon

相关问题