Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在视图上添加虚线边框';s帧不在边界上[Swift]_Ios_Uiview_Swift4_Uibezierpath_Cashapelayer - Fatal编程技术网

Ios 如何在视图上添加虚线边框';s帧不在边界上[Swift]

Ios 如何在视图上添加虚线边框';s帧不在边界上[Swift],ios,uiview,swift4,uibezierpath,cashapelayer,Ios,Uiview,Swift4,Uibezierpath,Cashapelayer,我试图在视图上添加一个虚线边框,它将始终位于视图的框架上,而不是其边界上 我的代码: func addDashedBorder() { let color = UIColor.red.cgColor shapeLayer = CAShapeLayer() let frameSize = self.bounds.size let shapeRect = CGRect(x:0 , y: 0, width: frameSize.width, height: frame

我试图在视图上添加一个虚线边框,它将始终位于视图的框架上,而不是其边界上

我的代码:

func addDashedBorder() {

    let color = UIColor.red.cgColor
    shapeLayer = CAShapeLayer()
    let frameSize = self.bounds.size
    let shapeRect = CGRect(x:0 , y: 0, width: frameSize.width, height: frameSize.height)

    shapeLayer.frame = shapeRect
    shapeLayer.position = CGPoint(x: frameSize.width/2, y: frameSize.height/2)
    shapeLayer.fillColor = UIColor.clear.cgColor
    shapeLayer.strokeColor = color
    shapeLayer.lineWidth = 2
    shapeLayer.lineJoin = CAShapeLayerLineJoin.round
    shapeLayer.lineDashPattern = [6,3]
    shapeLayer.path = UIBezierPath(roundedRect: self.frame, cornerRadius: 5).cgPath

    self.layer.addSublayer(shapeLayer)
}
结果

如果旋转视图,我不想旋转视图上的边框。 它应该表明它在视图中占据了多少空间

期望值


您需要采取两种视图,即内部视图和外部视图。内部视图(旋转视图)应位于外部视图的子视图中。两个视图的框架必须相同。使用以下代码行-

@IBOutlet weak var viewOuter: UIView! //static outer view
@IBOutlet weak var viewInner: UIView! // View that will be use for rotation

func addDashedBorder() {

    let color = UIColor.red.cgColor
    let shapeLayer = CAShapeLayer()
    let frameSize = viewInner.bounds.size
    let shapeRect = CGRect(x:0 , y: 0, width: frameSize.width, height: frameSize.height)
    shapeLayer.frame = shapeRect
    shapeLayer.position = CGPoint(x: frameSize.width/2, y: frameSize.height/2)
    shapeLayer.fillColor = UIColor.clear.cgColor
    shapeLayer.strokeColor = color
    shapeLayer.lineWidth = 2
    shapeLayer.lineJoin = kCALineJoinRound
    shapeLayer.lineDashPattern = [6,3]
    shapeLayer.path = UIBezierPath(roundedRect: viewInner.frame, cornerRadius: 5).cgPath
    self.viewOuter.layer.addSublayer(shapeLayer)

}

外部虚线视图的高度和宽度应与内部对角线视图相同√2*箭头视图的宽度。然后,只需设置箭头视图的动画即可。另外,你的第一张图片在箭头和边框之间会有一个较大的填充。填充是可以的,我的任务是显示,我们看到的是内部视图的框架。视图可以是正方形或长方形。外部视图将始终是一个正方形,其边长和内部视图的最长对角线。这是中间带箭头的图像?是的,这是图像,可以是任何东西。