IPad 游乐场有不同 View.Frame
IPad Playground Has Different View.Frame
我正在尝试使用以下代码在 iPad 游乐场中展示这个简单的 ViewController:
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
}
func setupViews() {
let view1 = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width/2, height: 100))
view1.backgroundColor = .red
view.addSubview(view1)
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()
你可以看到,即使 View1 的框架显示 view.frame.width/2,视图仍然是这样的:
怎么了?谢谢。
您可以在初始化 ViewController 后设置您喜欢的尺寸:
import UIKit
import PlaygroundSupport
class VC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
}
func setupViews() {
let view1 = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width/2, height: 100))
view1.backgroundColor = .red
view.addSubview(view1)
}
}
let vc = VC()
vc.preferredContentSize = CGSize(width: 768, height: 1024)
PlaygroundPage.current.liveView = vc
Playground with preferredContentSize
Playground without preferredContentSize
这是我使用的解决方案,它可以正常工作。在 Swift Playgrounds 中,布局是在 viewDidLayoutSubview
方法中创建的,因此所有框架都应该在那里创建。
我正在尝试使用以下代码在 iPad 游乐场中展示这个简单的 ViewController:
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
}
func setupViews() {
let view1 = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width/2, height: 100))
view1.backgroundColor = .red
view.addSubview(view1)
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()
你可以看到,即使 View1 的框架显示 view.frame.width/2,视图仍然是这样的:
怎么了?谢谢。
您可以在初始化 ViewController 后设置您喜欢的尺寸:
import UIKit
import PlaygroundSupport
class VC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
}
func setupViews() {
let view1 = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width/2, height: 100))
view1.backgroundColor = .red
view.addSubview(view1)
}
}
let vc = VC()
vc.preferredContentSize = CGSize(width: 768, height: 1024)
PlaygroundPage.current.liveView = vc
Playground with preferredContentSize
Playground without preferredContentSize
这是我使用的解决方案,它可以正常工作。在 Swift Playgrounds 中,布局是在 viewDidLayoutSubview
方法中创建的,因此所有框架都应该在那里创建。