Bạn nói rằng bạn không muốn sử dụng một XIB và muốn làm điều đó tất cả các lập trình.
Bạn cần phải thực hiện các phương pháp initWithFrame:
:
- (id)initWithFrame:(CGRect)frame
{
if ((self = [super initWithFrame:frame])) {
// create/initialize your subviews here
self.myLabel = [[UILabel alloc] init...];
// configure the label
self.myLabel.font = ...;
self.myLabel.autoresizingMask = ...;
[self addSubview:self.myLabel];
}
return self;
}
Vì vậy, bạn tạo và cấu hình điều khiển của bạn (phông chữ, màu sắc, autoresizing mặt nạ vv) và thêm chúng như subviews, tất cả từ phương pháp initWithFrame:
. Bạn có thể muốn phá vỡ mã ra thành các phương pháp khác nhau để giữ cho mọi thứ sạch sẽ.
Nếu bạn đang sử dụng tính năng tự động trả lời, bạn cũng muốn tạo tất cả các ràng buộc của mình từ phương thức init.
Nếu bạn đang không sử dụng tính năng tự động trả lời, bạn nên triển khai phương thức -layoutSubviews
. Điều này sẽ được gọi vào những thời điểm thích hợp để bố trí subviews của bạn (ví dụ khi khung nhìn thay đổi của bạn):
- (void)layoutSubviews
{
self.myLabel.frame = ...;
}
Từ phương pháp layoutSubviews
bạn có thể truy cập vào self.bounds
để tìm ra kích thước của quan điểm lúc bấy giờ. Điều này sẽ cho bạn biết có bao nhiêu chiều rộng/chiều cao bạn phải sắp xếp hoặc bọc mọi thứ một cách chính xác.
Khi nói đến việc tạo thể hiện chế độ xem của bạn, chỉ cần sử dụng [[MyCustomView alloc] init]
(gọi là initWithFrame:
với khoảng trống) hoặc [[MyCustomView alloc] initWithFrame:...]
.Đặt khung của nó và thêm nó vào một số xem. Phương pháp layoutSubviews
sẽ được gọi vào tất cả các thời điểm thích hợp và sẽ được bố trí tương ứng.
Nguồn
2013-08-01 13:08:28
Câu hỏi này quá rộng đối với câu hỏi QA đơn giản tại đây. Đi qua cuốn sách ở trên bao gồm tất cả mọi thứ theo chương trình. – bryanmac
đi qua bất kỳ cuốn sách học tập cơ bản nào. Đây là điều cơ bản nhất – iProgrammer
@Ezimettekin Bạn muốn tạo chế độ xem tùy chỉnh trong lớp đã tồn tại hoặc bạn muốn tạo lớp UIView với tệp nib – Vishnu