如何在ios中设置UIBezierPath边框以进行查看?

时间:2016-10-16 19:02:50

标签: ios swift uibezierpath cashapelayer

我使用以下代码为视图创建了CAShapeLayer边框:

func addBorderToWebView() {
    borderShape = CAShapeLayer()
    borderShape.path = UIBezierPath(rect: webView.frame).cgPath
    borderShape.lineWidth = CGFloat(2)
    borderShape.bounds = borderShape.path!.boundingBox
    borderShape.strokeColor = UIColor(red: 68/255, green: 219/255, blue: 94/255, alpha: 1.0).cgColor
    borderShape.position = CGPoint(x: borderShape.bounds.width/2, y: borderShape.bounds.height/2)
    webView.layer.addSublayer(borderShape)
}

我的右下边框线在框架外,你可以在下面的图片上看到它。但是,如果我定义borderWidth的{​​{1}}属性,则所有内容都显示正常。这就是我得出结论的原因,问题不在于布局约束。我应该如何配置webView.layer(或UIBezierPath)以正确显示边框?谢谢你的帮助!

CAShapeLayer border

1 个答案:

答案 0 :(得分:1)

尝试替换此

$target = $this->getTargetFile($directory, $name);

if (!@move_uploaded_file($this->getPathname(), $target)) {
    $error = error_get_last();
    throw new FileException(sprintf('Could not move file "%s" to "%s" (%S)', $this->getPathname(), $target, strip_tags($error['message'])));
}

@chmod($target, 0666 & ~umask());

用这个:

borderShape.path = UIBezierPath(rect: webView.frame).cgPath

问题的另一个可能原因是borderShape.path = UIBezierPath(rect: webView.bounds).cgPath 的框架在您设置为webView时尚未更新。您可以在添加边框形状之前尝试borderShape。如果它无法覆盖以下方法:

self.view.updateLayoutIfNeeded()

这将确保每次更新帧时,边框形状也会更新。