swift - 在视图控制器内移动视图
问题描述
我有一个视图控制器和堆栈视图设置如下。在堆栈视图中,我有按钮。
我Player
在视图控制器中有一个类,其中有一个移动卡片的功能。我需要我busViewButton
继续前进,BtnP1A
我试图实现它如下:
class GameViewController: UIViewController, Alertable {
@IBOutlet weak var btnP1A: UIButton!
@IBOutlet weak var btnP1B: UIButton!
var p1 = Player(n:"P1")
func start() -> Void{
p1.buttonA = btnP1A
p1.buttonB = btnP1B
p1.vc = self
}
.....
public class Player: Alertable{
var buttonA:UIButton!
var buttonB:UIButton!
weak var vc: GameViewController! = nil
.....
func move() -> Void{
var busFrame = self.vc.busViewButton.frame
//self.buttonA is BtnP1A
let frameA = self.buttonA.superview?.convert(self.buttonA.frame.origin, to: nil)
busFrame.origin.y = frameA!.y
busFrame.origin.x = frameA!.x
self.vc.busViewButton.frame = busFrame
}
.....
}
}
但这并不能正确更新位置,新位置与 的位置不同BtnP1A
。我没有正确获得相对位置吗?
更新:
它与从嵌套类中调用有关。因为,当从 View Controller 类调用类似的动画时,它可以工作,但是当在 Player 类中移动时,它就不起作用了。
解决方案
试试这个 p1.buttonA.isHidden = true
如果您在堆栈视图中使内容的可见性为假,则其他视图将转到顶部或其他位置(当然取决于您的约束)。
推荐阅读
- scala - 类内的对象
- vespa - 如何在 Vespa 中备份文件
- python - active_id 在 Odoo 13 中无法正常工作。没有它如何工作?
- c++ - 有没有办法让子班省略父母不必要的成员?
- flutter - 颤动我的导航栏显示在顶部
- snowflake-cloud-data-platform - 更改屏蔽策略而不取消设置该屏蔽策略
- docx4j - DOCX4J 异常:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:1
- react-native - React Native ScrollView 改变高度和滚动底部
- python - 如何将数据发布到测试客户端发布请求中?
- java - java.lang.IllegalArgumentException:不支持的类文件主要版本 58