Tôi muốn có một số UITextView
để điền số superView
, số này là UIView
đơn giản trong một phiên bản UIViewController
.xcode/iOS: Tự động điền chế độ xem - kích thước khung hình rõ ràng là điều cần thiết?
Dường như tôi không thể thực hiện việc UITextView
thực hiện việc này chỉ bằng cách sử dụng các thuộc tính được chỉ định API của autoresizingMask
và autoresizesSubviews
. Đặt những thứ này như được hiển thị ở đây không có gì; UITextView
vẫn còn nhỏ mặc dù superView
lấp đầy màn hình.
// use existing instantiated view inside view controller;
// ensure autosizing enabled
self.view.autoresizesSubviews = YES;
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight|
UIViewAutoresizingFlexibleWidth;
// create textview
textView = [[[UITextView alloc] autorelease] initWithFrame:CGRectMake(0, 0, 1, 1)];
// enable textview autoresizing
[textView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|
UIViewAutoresizingFlexibleHeight];
// add textview to view
[self.view addSubview:textView];
Tuy nhiên, nếu tôi nhanh chóng nhìn của riêng tôi bên trong bộ điều khiển xem, thay thế '.view' tài sản của mình, sau đó mọi thứ hoạt động như mong đợi, và TextView đầy SuperView của nó:
// reinstantiate view inside view controller
self.view = [[UIView alloc]init];
// create textview
textView = [[[UITextView alloc] autorelease] initWithFrame:CGRectMake(0, 0, 1, 1)];
// enable textview autoresizing
[textView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|
UIViewAutoresizingFlexibleHeight];
// add textview to view
[self.view addSubview:textView];
tôi đã thử cả hai khối mã bên trong tất cả các initialisers/phương pháp, và tình huống tương tự phát sinh trong mọi trường hợp:
-(id)init;
-(id)initWithFrame:(CGRect)frame;
-(void)viewDidLoad;
tôi nhận ra rằng reinstantiating của .view 'của UIViewController
là fugly, bất cứ ai có thể giải thích những gì tôi đang làm sai? Tôi cho rằng tôi có thể khắc phục vấn đề này bằng mã cài đặt khung ban đầu trong số UIViewController
để đổi kích thước UITextView
một lần và sau đó autoresizing
sẽ hoạt động như mong muốn.
-(void)viewDidLoad {
textView.frame = self.view.frame;
}
... nhưng dường như view.frame không được thiết lập ở giai đoạn này, nó không có giá trị '.size' được xác định, do đó, một lần nữa textView vẫn còn nhỏ.
Cách thích hợp để đạt được những gì tôi muốn là gì? Tôi có phải chỉ định rõ ràng kích thước toàn màn hình qua UITextView:initWithFrame
để làm cho nó lấp đầy tầm nhìn của mình không?
Tôi rất biết ơn mọi lời khuyên bạn có thể cung cấp.
Đừng 'autorelease' trước khi bạn 'init'. Thứ tự đúng là '... alloc] init] autorelease]'. 'UIView' sẽ ổn, nhưng' NSString's và các nhóm lớp khác sẽ bị rò rỉ nếu bạn sử dụng 'autorelease' và' init' theo thứ tự sai. Xin lỗi vì không thể giúp câu hỏi thực sự của bạn. – Yuji
Cảm ơn Yuji, tôi đánh giá cao mẹo - điều mà tôi không biết! – KomodoDave