2012-10-09 142 views
1

我只是想輕鬆打印出myButton維度。請檢查代碼:UIButton的邊界和框架

@interface ViewController : UIViewController 

@property (nonatomic, strong) IBOutlet UIButton *myButton; 

和.m文件:

@implementation ViewController 

@synthesize myButton; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    CGRect f2 = self.myButton.bounds; 
    printf("x: %f\n", f2.origin.x); 


    CGSize f3 = self.myButton.frame.size; 
    printf("x: %f\n", f3.height); 
} 

- (void)viewWillAppear:(BOOL)animated { 
    CGRect f2 = self.myButton.bounds; 
    printf("x: %f\n", f2.origin.x); 


    CGSize f3 = self.myButton.bounds.size; 
    printf("x: %f\n", f3.height); 
} 

這是我在控制檯收到:

x: 0.000000 
x: 0.000000 
x: 0.000000 
x: 0.000000 

你能不能幫我,我怎麼能打印呢?

enter image description here

+1

是你積極的,你已經連接IBOutlet到UIButton在xib – AppleDelegate

+0

是的,我做了,我非常確定。 – Ali

+0

試試這個NSLog(@「Button Frame - %@」,[myButton description]);在這個檢查你的框架(或)NSLog(@「Button Frame - %@」,[myButton.frame]); –

回答

0

試試這個 -

myButton.frame.origin.x; 
myButton.frame.origin.y; 
myButton.frame.size.width; 
myButton.frame.size.height; 
0

普萊斯檢查,有參考的.xib或故事板(無論您使用的)出口。

+0

我做到了,我很確定。即使我創建了一個新項目並再次進行測試。 – Ali

+0

只是使用幀而不是邊界。 –

0

這是給你的viewDidLoad正確的代碼:

在自動版式它將繼續計算幀,直到 viewWillAppear的情況下
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CGRect f2 = self.myButton.frame; 
    NSLog("x origin: %f\n", f2.origin.x); 
    NSLog("y origin: %f\n", f2.origin.y); 
    NSLog("height: %f\n", f2.size.height); 
    NSLog("width: %f\n", f2.size.width); 
} 
+0

結果爲0。 – Ali

+0

嘗試將代碼放入** viewDidAppear:** – rdurand

3

叫,張貼NSLogviewDidAppear方法會給你的結果你想要的界限按鈕

0

另外一個需要注意的是,你可以用方便的方法:

NSLog(@"self.myButton.bounds = %@", NSStringFromCGRect(self.myButton.bounds)); 
NSLog(@"self.myButton.frame = %@", NSStringFromCGRect(self.myButton.frame)); 

快速,輕鬆地打印出的CGRect,而不必使用不同的字符串格式或的NSLog語句的負載

0

我知道這是老了,但備案,你的按鈕的尺寸將可以在viewDidLoad中設置或viewDidAppear。使用自動佈局時使用viewDidLayoutSubviews。這是一個重要的問題。而且,這可能被稱爲無數次。所以,如果你正在做一些昂貴的價值,處理它。