无法使用 CGRectMake 调整 UIButton 的大小
Cant resize a UIButton with CGRectMake
我有一个带有图像的按钮,我正在使用 UIView.animateWithDuration 为视图和图像视图分配新的大小。
视图正确放大,但图像视图没有变化
代码片段:
@IBAction func imageButtonDidTouch(sender: AnyObject) {
UIView.animateWithDuration(0.7) {
/*** Executes Properly ***/
self.dialogView.frame = CGRectMake(0, 0, self.screenWidth!, self.screenHeight!)
/*** Does Not Execute ****/
self.imageButton.frame = CGRectMake(0, 0, self.screenWidth!, 240)
/*** Executes Properly ***/
self.likeButton.hidden = true
self.shareButton.hidden = true
self.userButton.hidden = true
self.headerView.hidden = true
self.dialogView.layer.cornerRadius = 0
}
}
按下按钮前的屏幕截图:
按下按钮后的屏幕截图:
屏幕宽度和屏幕高度已在 viewDidLoad()
中定义
screenWidth = UIScreen.mainScreen().bounds.width
screenHeight = UIScreen.mainScreen().bounds.height
编辑 1:
imageButton 声明
@IBOutlet weak var imageButton: UIButton!
编辑 2:
我在动画函数中添加了一个完成处理程序:
@IBAction func imageButtonDidTouch(sender: AnyObject) {
print("Height Before:", self.imageButton.frame.height)
print("Width Before:",self.imageButton.frame.width)
UIView.animateWithDuration(0.7, animations: {
/*** Executes Properly ***/
self.dialogView.frame = CGRectMake(0, 0, self.screenWidth!, self.screenHeight!)
/*** Does Not Execute ****/
self.imageButton.frame = CGRectMake(0, 0, self.screenWidth!, 240)
/*** Executes Properly ***/
self.likeButton.hidden = true
self.shareButton.hidden = true
self.userButton.hidden = true
self.headerView.hidden = true
self.dialogView.layer.cornerRadius = 0
}) { (true) in
print("Height After:", self.imageButton.frame.height)
print("Width After:",self.imageButton.frame.width)
}
}
控制台截图:
查看层次结构:
在设置 imageButton 大小之前检查您是否收到所需的屏幕宽度。
获取 UIScreen
帧数据的正确位置在 viewDidLayoutSubviews
中,因为它是在子视图在屏幕上布局后调用的,也是在每次设备更改方向后调用的,例如因为当您的用户进入横向时您的宽度会有所不同 mode.This 在 viewWillAppear:
之后被调用
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
screenWidth = UIScreen.mainScreen().bounds.width
screenHeight = UIScreen.mainScreen().bounds.height
}
然后:-
如果您正在初始化和声明您的按钮以编程方式:
print(self.screenWidth)
self.imageButton.frame.size = CGSizeMake(self.screenWidth,240)
如果您使用 AutoLayout 作为约束,则:-
在 class
中创建按钮宽度限制的 @IBOutlet
@IBOutlet weak var widthConstraint: NSLayoutConstraint!
然后相应地设置它。
widthConstraint = self.screenWidth
Note:
For conditions not using Auto Layout, when views are embedded within a view the CGRectMake function will only be executed for the parent view and not for the child view.
如果需要使用CGRectMake
执行操作,需要禁用自动布局
我有一个带有图像的按钮,我正在使用 UIView.animateWithDuration 为视图和图像视图分配新的大小。
视图正确放大,但图像视图没有变化
代码片段:
@IBAction func imageButtonDidTouch(sender: AnyObject) {
UIView.animateWithDuration(0.7) {
/*** Executes Properly ***/
self.dialogView.frame = CGRectMake(0, 0, self.screenWidth!, self.screenHeight!)
/*** Does Not Execute ****/
self.imageButton.frame = CGRectMake(0, 0, self.screenWidth!, 240)
/*** Executes Properly ***/
self.likeButton.hidden = true
self.shareButton.hidden = true
self.userButton.hidden = true
self.headerView.hidden = true
self.dialogView.layer.cornerRadius = 0
}
}
按下按钮前的屏幕截图:
按下按钮后的屏幕截图:
屏幕宽度和屏幕高度已在 viewDidLoad()
中定义screenWidth = UIScreen.mainScreen().bounds.width
screenHeight = UIScreen.mainScreen().bounds.height
编辑 1: imageButton 声明
@IBOutlet weak var imageButton: UIButton!
编辑 2: 我在动画函数中添加了一个完成处理程序:
@IBAction func imageButtonDidTouch(sender: AnyObject) {
print("Height Before:", self.imageButton.frame.height)
print("Width Before:",self.imageButton.frame.width)
UIView.animateWithDuration(0.7, animations: {
/*** Executes Properly ***/
self.dialogView.frame = CGRectMake(0, 0, self.screenWidth!, self.screenHeight!)
/*** Does Not Execute ****/
self.imageButton.frame = CGRectMake(0, 0, self.screenWidth!, 240)
/*** Executes Properly ***/
self.likeButton.hidden = true
self.shareButton.hidden = true
self.userButton.hidden = true
self.headerView.hidden = true
self.dialogView.layer.cornerRadius = 0
}) { (true) in
print("Height After:", self.imageButton.frame.height)
print("Width After:",self.imageButton.frame.width)
}
}
控制台截图:
查看层次结构:
在设置 imageButton 大小之前检查您是否收到所需的屏幕宽度。
获取 UIScreen
帧数据的正确位置在 viewDidLayoutSubviews
中,因为它是在子视图在屏幕上布局后调用的,也是在每次设备更改方向后调用的,例如因为当您的用户进入横向时您的宽度会有所不同 mode.This 在 viewWillAppear:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
screenWidth = UIScreen.mainScreen().bounds.width
screenHeight = UIScreen.mainScreen().bounds.height
}
然后:-
如果您正在初始化和声明您的按钮以编程方式:
print(self.screenWidth)
self.imageButton.frame.size = CGSizeMake(self.screenWidth,240)
如果您使用 AutoLayout 作为约束,则:-
在 class
中创建按钮宽度限制的@IBOutlet
@IBOutlet weak var widthConstraint: NSLayoutConstraint!
然后相应地设置它。
widthConstraint = self.screenWidth
Note: For conditions not using Auto Layout, when views are embedded within a view the CGRectMake function will only be executed for the parent view and not for the child view.
如果需要使用CGRectMake
执行操作,需要禁用自动布局