- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我以编程方式在我的 UIInputViewController 的 viewDidLoad() 中创建了一组按钮。当方向从横向变为纵向时,我试图更改这些按钮的大小,反之亦然。
我正在尝试使用
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)
但是当我使用与在 viewDidLoad() 中创建按钮时相同的代码,仅更改 UIlabel.frame 以适应新的高度和宽度时, View 不会更新。我是否必须先移除按钮并从头开始加载它们,还是有其他方法可以做到这一点?
下面是函数的完整代码。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
let width = screensize.width
var height = CGFloat(141)
let sizey = screensize.height
switch sizey {
case 1366:
height = CGFloat(383-15)
case 1112:
height = CGFloat(320-15)
case 812:
height = CGFloat(141-15)
case 1024:
height = CGFloat(320-15)
case 736:
height = CGFloat(226-15)
case 667:
height = CGFloat(216-15)
case 568:
height = CGFloat(216-15)
case 768:
height = CGFloat(420-15)
default:
height = CGFloat(141-15)
}
connection.frame = CGRect(x: 0, y: 0, width: width/2, height: 15)
serialNum.frame = CGRect( x: width/2, y: 0, width: width/2, height:15)
plus.frame = CGRect(x:0, y: 15, width: width/5,height: height/4)
minus.frame = CGRect(x:0, y: height/4+15, width: width/5,height: height/4)
left.frame = CGRect(x:0, y: height/2+15, width: width/5,height: height/4)
nextKeyboardButton.frame = CGRect(x:0,y: 3*height/4+15, width: width/5,height: height/4)
num1.frame = CGRect(x:width/5, y: 15, width: width/5,height: height/4)
num4.frame = CGRect(x:width/5, y: height/4+15, width: width/5,height: height/4)
num7.frame = CGRect(x:width/5, y: height/2+15, width: width/5,height: height/4)
comma.frame = CGRect(x:width/5, y: 3*height/4+15, width: width/5,height: height/4)
num2.frame = CGRect(x:width*2/5,y: 15, width: width/5,height: height/4)
num5.frame = CGRect(x:width*2/5,y: height/4+15, width: width/5,height: height/4)
num8.frame = CGRect(x:width*2/5,y: height/2+15, width: width/5,height: height/4)
num0.frame = CGRect(x:width*2/5,y: 3*height/4+15, width: width/5,height: height/4)
num3.frame = CGRect(x:width*3/5,y: 15, width: width/5,height: height/4)
num6.frame = CGRect(x:width*3/5,y: height/4+15, width: width/5,height: height/4)
num9.frame = CGRect(x:width*3/5,y: height/2+15, width: width/5,height: height/4)
period.frame = CGRect(x:width*3/5,y: 3*height/4+15, width: width/5,height: height/4)
back.frame = CGRect(x:width*4/5, y: 15, width: width/5, height: height/4)
spaceBar.frame = CGRect(x: width*4/5, y: height/4+15, width: width/5, height: height/4)
right.frame =
CGRect(x: width*4/5, y: height/2+15, width: width/5, height: height/4)
returnKey.frame = CGRect(x:width*4/5, y: height*3/4+15, width: width/5, height: height/4)
self.view.addSubview(spaceBar)
self.view.addSubview(num1)
self.view.addSubview(num2)
self.view.addSubview(num3)
self.view.addSubview(num4)
self.view.addSubview(num5)
self.view.addSubview(num6)
self.view.addSubview(num7)
self.view.addSubview(num8)
self.view.addSubview(num9)
self.view.addSubview(num0)
self.view.addSubview(plus)
self.view.addSubview(minus)
self.view.addSubview(back)
self.view.addSubview(left)
self.view.addSubview(right)
self.view.addSubview(period)
self.view.addSubview(comma)
self.view.addSubview(nextKeyboardButton)
self.view.addSubview(returnKey)
最佳答案
您需要使用在“viewWillTransition”方法中获得的“size”参数来设置新的“width”和“sizey”属性,而不是“screensize”。
关于ios - 使用 viewWillTransition 更改方向时更改 UILabel.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56155262/
我正在制作自定义键盘。我想根据 View 的宽度和高度生成键(UIButtons)的宽度和高度。 最初加载键盘时,viewDidAppear 会正确确定 View 的高度。 (375 x 216) o
我正在使用 UICollectionView 创建全屏图片库。当用户旋转设备时,我会在 中对 UICollectionView 执行更新 func viewWillTransition(调整大小:CG
我有一个 iOS 应用程序,有 3 个容器 View (A、B 和 C)。顶部容器 View (A) 是静态的,下面有一个容器 View (B),带有一个按钮,可将其“移动”到一侧以显示第三个容器 V
我正在使用具有两种 View 类型的日历 cocoapod(CVCalendar:https://github.com/CVCalendar/CVCalendar);周 View 和月 View 。
我正在学习开发 iOS 应用程序,目前我有 4 个 View Controller 。 在第一个 viewController 中,我使用方法 viewWillTransition 在运行时调整 UI
我使用 viewWillTransition 来更改 View 的框架,如果我的 ViewController 位于最顶层,那么一切都很好,这是旋转时打印的框架 TEST frame: (0.0, 0
我以编程方式在我的 UIInputViewController 的 viewDidLoad() 中创建了一组按钮。当方向从横向变为纵向时,我试图更改这些按钮的大小,反之亦然。 我正在尝试使用 over
我试图仅用一个 View 更改方向,其余 View 都固定为纵向。我在 AppDelegate 中设置了一个方法,如下所示 func application(_ application: UIAppl
我的应用程序是基于选项卡的导航。我在 iOS11 中使用 Xcode9。为了支持横向/纵向兼容性,我在所有 viewController 中使用以下方法。 override func viewWill
我必须检查我的设备在 iOS 8+ 中是否改变了方向。 我的做法是: override func viewWillTransition(to size: CGSize, with coordinato
这是我如何重写我的 View Controller ,但是,如果有另一种更好的方法来做到这一点,那么我的第二个 View Controller 不符合重写请指导我,任何建议都会很好. override
我有一个名为 myView 的 UIView 子类,当设备方向发生变化时,它应该重新配置自身。我在 UIViewController 中使用 viewWillTransition(to size: C
我正在制作一个 iMessage 应用程序。我已经实现了 viewWillTransition(to:with:) 以调整/重新排列我的应用程序中的 View 。当我的应用程序的 presentati
我是一名优秀的程序员,十分优秀!