当以编程方式添加某些内容时,UIView 发生了变化 - Swift
UIView changed when something is added programmatically - Swift
我正在为 iPad 开发应用程序。在此应用程序中,我使用容器视图控制器和视图控制器。在问题之前,让我向您展示它是如何工作的:
我的 Swift 代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var containerView: UIView!
@IBOutlet var blueView: UIView!
var frameSize: CGSize!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
frameSize = self.view.frame.size
containerView.frame.origin = CGPoint(x: frameSize.width - containerView.frame.width, y: 0)
let deviceSize = CGSize(width: 375, height: 667)
blueView.frame = CGRect(origin: CGPoint(x: frameSize.width / 2 - deviceSize.width / 2 - containerView.frame.width / 2, y: frameSize.height / 2 - deviceSize.height / 2), size: deviceSize)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let button = UIButton(frame: CGRect(origin: CGPoint(x: 20, y: 20), size: CGSize(width: 100, height: 50)))
button.titleLabel?.text = "Button Test"
button.backgroundColor = .redColor()
blueView.addSubview(button)
}
}
我运行它,一切都按预期发生。
问题是,当我触摸屏幕时,运行ning 代码在 touchesBegan 中。
问题是添加任何程序。我无法修复它。我的屏幕是这样的:
当我以编程方式添加内容时,我无法确定原点和大小发生了什么变化。
有人可以帮助我吗?
出现这种情况是因为选项“使用自动布局”。让禁用解决问题
我正在为 iPad 开发应用程序。在此应用程序中,我使用容器视图控制器和视图控制器。在问题之前,让我向您展示它是如何工作的:
我的 Swift 代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var containerView: UIView!
@IBOutlet var blueView: UIView!
var frameSize: CGSize!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
frameSize = self.view.frame.size
containerView.frame.origin = CGPoint(x: frameSize.width - containerView.frame.width, y: 0)
let deviceSize = CGSize(width: 375, height: 667)
blueView.frame = CGRect(origin: CGPoint(x: frameSize.width / 2 - deviceSize.width / 2 - containerView.frame.width / 2, y: frameSize.height / 2 - deviceSize.height / 2), size: deviceSize)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let button = UIButton(frame: CGRect(origin: CGPoint(x: 20, y: 20), size: CGSize(width: 100, height: 50)))
button.titleLabel?.text = "Button Test"
button.backgroundColor = .redColor()
blueView.addSubview(button)
}
}
我运行它,一切都按预期发生。
问题是,当我触摸屏幕时,运行ning 代码在 touchesBegan 中。
问题是添加任何程序。我无法修复它。我的屏幕是这样的:
当我以编程方式添加内容时,我无法确定原点和大小发生了什么变化。
有人可以帮助我吗?
出现这种情况是因为选项“使用自动布局”。让禁用解决问题