如何改变CGRect的x和y?

3

我画了一个矩形。当我触摸屏幕时,可以改变宽度和高度。 默认情况下,我让x = 50,y = self.view.frame.height/2。我需要相对于x和y拉伸矩形。我应该如何改变xy?

var scanRectangleRect = CGRect.zero
var scanRectangle: UIView = UIView()


func drawLine() {
    self.view.addSubview(scanRectangle)
    scanRectangle.backgroundColor = UIColor.gray
    scanRectangleRect = CGRect(x: 50, y: self.view.frame.height/2, width: 400, height: 150)

    scanRectangle.frame  = scanRectangleRect
    scanRectangle.center = CGPoint(x: scanRectangle.center.x, y: self.view.frame.height/2)
    scanRectangle.isHidden = false
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    scanRectangle.frame.size.height += 10
    scanRectangle.frame.size.width += 10
}
3个回答

3
scanRectangle.frame.origin.x += 10
scanRectangle.frame.origin.y += 10

请参考https://developer.apple.com/documentation/coregraphics/cgrect/1454354-origin

如果您想增加矩形的大小但保持其在同一位置上居中:

let delta = 10

scanRectangle.frame.origin.x -= delta / 2
scanRectangle.frame.origin.y -= delta / 2
scanRectangle.frame.size.width += delta
scanRectangle.frame.size.height += delta

或者

scanRectangle.frame = scanRectangle.frame.insetBy(dx: -10, dy: -10)

矩形正在移动,但我需要将其拉伸。 - kvv
@Kazak 你读了 sulthan 提供的链接 https://developer.apple.com/documentation/coregraphics/cgrect 吗? - user5890979
@Sneak 是的,我做了。 - kvv

3
let distance: CGFloat = 10
scanRectangle.frame = CGRect(x: scanRectangle.frame.origin.x + distance, 
                             y: scanRectangle.frame.origin.y + distance, 
                         width: scanRectangle.frame.size.width - distance, 
                        height: scanRectangle.frame.size.height - distance)

我认为你的意思是在某个基准点上缩放矩形。

0
scanRectangle.frame.origin.x += 10;
scanRectangle.frame.origin.y += 10;

这是你所要求的吗?


我需要根据x和y来拉伸矩形。 - kvv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接