还有一个类似但尚未解决的问题
bound and frame for a UIButton

我正在使用自动布局的情节提要和“基于页面的应用程序模板”

通过使基于标准页面的应用程序在情节提要板上添加按钮并在其中引用它,我能够重现此问题。

DataViewController.m的viewDidAppear

- (void)viewDidAppear:(BOOL)animated
{
    NSLog(@"View did appear");
    NSLog(@"self.myButton.bounds = %@",NSStringFromCGRect(self.myButton.bounds));
    NSLog(@"self.myButton.frame = %@",NSStringFromCGRect(self.myButton.frame));
    NSLog(@"self.myButton = %@",self.myButton);
}


输出
2013-05-14 19:37:45.954 FrameTest4 [10777:c07]视图确实出现了
2013-05-14 19:37:45.966 FrameTest4 [10777:c07] self.myButton.bounds = {{0,0},{0,0}}
2013-05-14 19:37:45.968 FrameTest4 [10777:c07] self.myButton.frame = {{0,0},{0,0}}
2013-05-14 19:37:45.970 FrameTest4 [10777:c07] self.myButton =>

头文件

#import <UIKit/UIKit.h>
@interface DataViewController : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *dataLabel;
@property (strong, nonatomic) id dataObject;
@property (weak, nonatomic) IBOutlet UIButton *myButton;


当我在具有自动布局和情节提要的单个视图应用程序中运行相同的代码时,它运行良好。

我需要此信息的原因是我需要运行一个动画,该动画在按钮处结束。
谢谢
瑞安

最佳答案

我通常在新的iOS 5方法viewDidLayoutSubviews中执行这种操作。

但是请小心,因为此方法可能会被调用多次,所以您可能必须保留一个标记来跟踪此方法。

10-08 16:58