Nic*_*los 10 frame uiview uiimageview swift
当我按下按钮时,我正试图制作一个可拖动的图像(猴子)代替另一个可拖动的图像(香蕉).
到目前为止,我已经能够获得香蕉的坐标,并将它们存储为猴子的新x,y坐标.但是,视图没有更新,猴子也没有移动到它的新位置.
我确定我需要更新视图,但无法弄清楚.我试图添加一个新的子视图(self.view.addSubview(monkey))但是当我这样做时,它是重置的整个视图,猴子和香蕉都回到原来的坐标.
这是动作按钮的代码:
@IBAction func getCoordinates (sender : AnyObject) {
var bananax = banana.frame.origin.x
var bananay = banana.frame.origin.y
var monkeyx = monkey.frame.origin.x
var monkeyy = monkey.frame.origin.y
println("Banana : \(bananax) et \(bananay)")
println("Monkey's default coordinates : \(monkeyx) et \(monkeyy)")
monkeyx = bananax
monkeyy = bananay
println("Monkey's new coordinates : \(monkeyx) et \(monkeyy)")
}
Run Code Online (Sandbox Code Playgroud)
关于如何仅更新猴子而不重置整个视图的任何想法?
谢谢 :)
Ber*_*ter 21
设置monkeyx和monkeyy低于此值时,这些值就会被丢弃.
var monkeyx = monkey.frame.origin.x
var monkeyy = monkey.frame.origin.y
Run Code Online (Sandbox Code Playgroud)
分配以下值只会将一个局部变量的值分配给另一个局部变量.它实际上并没有改变坐标monkey.
monkeyx = bananax
monkeyy = bananay
Run Code Online (Sandbox Code Playgroud)
你必须通过构造一个新的CGRect和分配monkey的来设置猴子的新坐标frame:
monkey.frame = CGRect(x: bananax, y: bananay, width: monkey.frame.size.width, height: monkey.frame.size.height)
Run Code Online (Sandbox Code Playgroud)
由于您只是将monkey原点设置为banana原点,因此可以删除所有var声明,并通过构造monkey具有monkey's size和banana'原点的新帧来将其减少为一行:
monkey.frame = CGRect(origin: banana.frame.origin, size: monkey.frame.size)
Run Code Online (Sandbox Code Playgroud)
嗨创建这个扩展,如果你想.对于斯威夫特
创建文件Extends.Swift并添加此代码
/**
Extension UIView
by DaRk-_-D0G
*/
extension UIView {
/**
Set x Position
:param: x CGFloat
by DaRk-_-D0G
*/
func setX(#x:CGFloat) {
var frame:CGRect = self.frame
frame.origin.x = x
self.frame = frame
}
/**
Set y Position
:param: y CGFloat
by DaRk-_-D0G
*/
func setY(#y:CGFloat) {
var frame:CGRect = self.frame
frame.origin.y = y
self.frame = frame
}
/**
Set Width
:param: width CGFloat
by DaRk-_-D0G
*/
func setWidth(#width:CGFloat) {
var frame:CGRect = self.frame
frame.size.width = width
self.frame = frame
}
/**
Set Height
:param: height CGFloat
by DaRk-_-D0G
*/
func setHeight(#height:CGFloat) {
var frame:CGRect = self.frame
frame.size.height = height
self.frame = frame
}
}
Run Code Online (Sandbox Code Playgroud)
For Use(继承UIView)
inheritsOfUIView.setX(x: 100)
button.setX(x: 100)
view.setY(y: 100)
Run Code Online (Sandbox Code Playgroud)