我已将一个带有自己的UIView类LogoLineView.swift的子视图添加到superview ViewController.swift中。
在我的故事板中的superview中,我有3个UI元素:
现在,在我的子视图类(LogoLineView.swift)中,我将覆盖drawRect,如下所示:
class LogoLineView: UIView {
var lineWidth: CGFloat = 0.5 {didSet { setNeedsDisplay() } }
var blueLineColor: UIColor = UIColor.blueColor() { didSet { setNeedsDisplay() } }
var redLineColor: UIColor = UIColor.redColor() { didSet { setNeedsDisplay() } }
var subViewCenter: CGPoint {
return convertPoint(center, fromView: superview)
}
override func drawRect(rect: CGRect) {
var blueLinePath = UIBezierPath()
blueLinePath.moveToPoint(subViewCenter)
blueLinePath.addLineToPoint(CGPoint(x: bounds.minX, y: bounds.midY))
blueLinePath.lineWidth = lineWidth;
blueLineColor.set()
blueLinePath.stroke()
var redLinePath = UIBezierPath()
redLinePath.moveToPoint(subViewCenter)
redLinePath.addLineToPoint(CGPoint(x: bounds.maxX, y: bounds.midY))
redLinePath.lineWidth = lineWidth;
redLineColor.set()
redLinePath.stroke()
}
}
我遇到的问题是,当我在子视图中添加与超视图中其他元素相关的约束时,我绘制的线条不可见。
但是,如果我删除了我的超级视图中的所有其他元素并只留下子视图,那么我能够按照我想要的方式看到我的线条。
我希望在“Hello World”文本和“这是我第一次使用Core Graphics和Bezier Paths”之间绘制我的线条。我希望这条线能够适应任何屏幕尺寸。
我正在使用的限制如下:
你可以帮我找一下缺少的东西吗?我很擅长使用Core Graphics和Bezier Paths。谢谢。答案 0 :(得分:1)
自动布局系统会折叠您绘制线条的视图。文本视图未折叠的原因是它们具有内在高度。为您的线视图提供固定的高度约束,或覆盖视图子类中的intrinsicContentSize()
,以便该视图也具有内在大小。