2012-10-07 26 views
13

Tôi hiện đang bị kẹt với một vấn đề rất lạ. Tôi đang sử dụng iOS 6 và Xcode 4.5. Tôi có bảng phân cảnh với UIViewControllerUIButton trong đó. Tôi đã tạo một ổ cắm UIButton yếu cho tệp .h của tôi.iOS không thể thay đổi khung của UIButton

Trong tệp .m Tôi muốn thay đổi khung của nút nhưng không có gì xảy ra. Tuy nhiên, tôi đã tạo và kết nối UIImageView giống như cách UIButton nhưng tôi có thể thay đổi khung của UIImageView mà không gặp bất kỳ sự cố nào.

Khi tôi làm điều này:

NSLog(@"%@", button) 

tôi nhận được kết quả này:

<UIButton: 0xa185a40; frame = (191 330; 73 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xa185640>> 

Và đây là những phần liên quan của mã của tôi:

-(void)viewDidLayoutSubviews{ 
    [self addStampGrid]; 
} 

-(void)addStampGrid { 

    // ... 

    [_button setFrame:CGRectMake(10,10,10,10)]; 
} 
+0

Làm cách nào để hiển thị thêm một số ngữ cảnh? http://sscce.org –

+0

Trước khi bạn cố gắng đặt khung, hãy thử 'NSLog ("% @ ", nút);' và đảm bảo rằng nó không phải là không. Tôi nghi ngờ rằng các ổ cắm không được thiết lập một cách chính xác. – lnafziger

+0

nút hmmm 'trong NSLog và' _button' trong setFrame –

Trả lời

23

tôi đã cùng lạ vấn đề khi sử dụng XCode 4.5 và iOS 6 làm mục tiêu triển khai. Tôi không sử dụng bảng câu chuyện mặc dù. Tôi đã giải quyết được bằng cách tắt tùy chọn "Sử dụng tính năng Tự động hoàn thành" trong Trình tạo giao diện. (Trong tập tin inspector-> tài liệu xây dựng giao diện.

Hope this helps

+0

Điều này có vẻ như một hack nhanh chóng và ý tưởng tồi. Sẽ tốt hơn nếu chỉ thay đổi các ràng buộc với @IBOutlets và sửa đổi button.layer.frame. – boidkan

6

Tháo nhìn từ SuperView và sau khi cài đặt khung thêm quan điểm này một lần nữa như là một subview. Hy vọng điều này sẽ làm việc tốt ...

+0

Điều này đã làm việc cho tôi, mà không yêu cầu tôi tắt "Sử dụng Autolayout" hoàn toàn. Vì vậy, tôi có thể có kết hợp bố cục tự động và tính toán thủ công khi cần thiết. +1! –

1

// Tháo nhìn từ superView

khung
UIView *view = yourButton.superview; 
[yourButton removeFromSuperview]; 

// thay đổi UIButton

CGRect bounds = view.bounds; 
yourButton.center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds)); 

// thêm quan điểm này một lần nữa như là một subview

[view addSubview:yourButton]; 
11

Bạn có thể thay đổi khung UIButton của bạn bằng cách thay đổi khung lớp của UIButton

[self.button.layer setFrame:] 

khung nhập QuartzCore trong phần đầu lớp học của bạn trước khi sử dụng này. Điều này cũng sẽ hoạt động với bố cục tự động.

+0

Up-bình chọn, nó làm việc cho tôi. Tôi không biết tại sao câu hỏi này đã bị bỏ phiếu trước. – NSPratik

+0

đây là câu trả lời đúng, vâng. –

7

Bạn có thể sử dụng này

[_button setTranslatesAutoresizingMaskIntoConstraints:YES]; 

sau bạn có thể đặt khung này nút của bạn.

Nó có thể cung cấp một số cảnh báo trong nhật ký về các ràng buộc, vì các ràng buộc ghi đè thuộc tính này mà bạn đã cung cấp trong chế độ tự động hoàn thành.

Các vấn đề liên quan