我怎样才能调整按钮的大小? Swift
How can I resize the button? Swift
如何在 phone 屏幕处于纵向或横向模式时更改按钮的宽度和长度?
我希望这是纵向屏幕时的按钮大小:
View_Mor.heightAnchor.constraint(equalToConstant: 140).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 140).isActive = true
当屏幕为横向时:
View_Mor.heightAnchor.constraint(equalToConstant: 30).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 30).isActive = true
这是我的代码:
class CHATViewController: UIViewController {
@IBOutlet weak var View_Mor: UIView!
override func viewDidLoad() {
super.viewDidLoad()
View_Mor.translatesAutoresizingMaskIntoConstraints = false
View_Mor.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
View_Mor.centerYAnchor.constraint(lessThanOrEqualTo: view.centerYAnchor).isActive = true
View_Mor.heightAnchor.constraint(equalToConstant: 140).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 140).isActive = true
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
if UIDevice.current.orientation.isLandscape {
View_Mor.heightAnchor.constraint(equalToConstant: 30).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 30).isActive = true
self.view.layoutIfNeeded()
} else {
print("Portrait")
View_Mor.heightAnchor.constraint(equalToConstant: 140).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 140).isActive = true
self.view.layoutIfNeeded()
}
}
}
但是不行
使用尺寸 类 改变按钮的宽度和长度。
覆盖 traitCollectionDidChange 方法,当 iPhone 在不同方向发生变化时将调用此方法。使用 traitCollection 中的 horizontalSizeClass 和 verticalSizeClass 激活所需的约束。
import UIKit
class CHATViewController: UIViewController {
@IBOutlet weak var View_Mor: UIView!
lazy var heightArchonWhenPortrait = View_Mor.heightAnchor.constraint(equalToConstant: 140)
lazy var widthArchonWhenPortrait = View_Mor.widthAnchor.constraint(equalToConstant: 140)
lazy var heightArchonWhenlandscap = View_Mor.heightAnchor.constraint(equalToConstant: 30)
lazy var widthArchonWhenlandscap = View_Mor.widthAnchor.constraint(equalToConstant: 30)
override func viewDidLoad() {
super.viewDidLoad()
View_Mor.translatesAutoresizingMaskIntoConstraints = false
View_Mor.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
View_Mor.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
heightArchonWhenPortrait.isActive = false
widthArchonWhenPortrait.isActive = false
heightArchonWhenlandscap.isActive = true
widthArchonWhenlandscap.isActive = true
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
redoLayout(trait: traitCollection)
}
func redoLayout(trait:UITraitCollection) {
if trait.horizontalSizeClass == .compact && trait.verticalSizeClass == .regular {
heightArchonWhenPortrait.isActive = false
widthArchonWhenPortrait.isActive = false
heightArchonWhenlandscap.isActive = true
widthArchonWhenlandscap.isActive = true
} else {
print("Portrait")
heightArchonWhenlandscap.isActive = false
widthArchonWhenlandscap.isActive = false
heightArchonWhenPortrait.isActive = true
widthArchonWhenPortrait.isActive = true
}
}
}
如何在 phone 屏幕处于纵向或横向模式时更改按钮的宽度和长度?
我希望这是纵向屏幕时的按钮大小:
View_Mor.heightAnchor.constraint(equalToConstant: 140).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 140).isActive = true
当屏幕为横向时:
View_Mor.heightAnchor.constraint(equalToConstant: 30).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 30).isActive = true
这是我的代码:
class CHATViewController: UIViewController {
@IBOutlet weak var View_Mor: UIView!
override func viewDidLoad() {
super.viewDidLoad()
View_Mor.translatesAutoresizingMaskIntoConstraints = false
View_Mor.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
View_Mor.centerYAnchor.constraint(lessThanOrEqualTo: view.centerYAnchor).isActive = true
View_Mor.heightAnchor.constraint(equalToConstant: 140).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 140).isActive = true
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
if UIDevice.current.orientation.isLandscape {
View_Mor.heightAnchor.constraint(equalToConstant: 30).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 30).isActive = true
self.view.layoutIfNeeded()
} else {
print("Portrait")
View_Mor.heightAnchor.constraint(equalToConstant: 140).isActive = true
View_Mor.widthAnchor.constraint(equalToConstant: 140).isActive = true
self.view.layoutIfNeeded()
}
}
}
但是不行
使用尺寸 类 改变按钮的宽度和长度。 覆盖 traitCollectionDidChange 方法,当 iPhone 在不同方向发生变化时将调用此方法。使用 traitCollection 中的 horizontalSizeClass 和 verticalSizeClass 激活所需的约束。
import UIKit
class CHATViewController: UIViewController {
@IBOutlet weak var View_Mor: UIView!
lazy var heightArchonWhenPortrait = View_Mor.heightAnchor.constraint(equalToConstant: 140)
lazy var widthArchonWhenPortrait = View_Mor.widthAnchor.constraint(equalToConstant: 140)
lazy var heightArchonWhenlandscap = View_Mor.heightAnchor.constraint(equalToConstant: 30)
lazy var widthArchonWhenlandscap = View_Mor.widthAnchor.constraint(equalToConstant: 30)
override func viewDidLoad() {
super.viewDidLoad()
View_Mor.translatesAutoresizingMaskIntoConstraints = false
View_Mor.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
View_Mor.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
heightArchonWhenPortrait.isActive = false
widthArchonWhenPortrait.isActive = false
heightArchonWhenlandscap.isActive = true
widthArchonWhenlandscap.isActive = true
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
redoLayout(trait: traitCollection)
}
func redoLayout(trait:UITraitCollection) {
if trait.horizontalSizeClass == .compact && trait.verticalSizeClass == .regular {
heightArchonWhenPortrait.isActive = false
widthArchonWhenPortrait.isActive = false
heightArchonWhenlandscap.isActive = true
widthArchonWhenlandscap.isActive = true
} else {
print("Portrait")
heightArchonWhenlandscap.isActive = false
widthArchonWhenlandscap.isActive = false
heightArchonWhenPortrait.isActive = true
widthArchonWhenPortrait.isActive = true
}
}
}