2013-03-22 29 views
5

Tôi đang làm việc với chế độ xem tùy chỉnh kế thừa từ UIScrollView. Vấn đề tôi đang gặp phải là thêm một UILabel sẽ được hiển thị ở đầu '', ở phía trước của các khung nhìn khác. Nó hoạt động, nhưng tiếc là nó cũng bao gồm các chỉ số cuộn.UIScrollView - Di chuyển chế độ xem về phía trước, nhưng bên dưới chỉ báo cuộn

enter image description here

Như bạn có thể thấy, chỉ số cuộn đang được che khuất. Tôi không muốn tắt các chỉ báo cuộn.

Tôi thêm quan điểm trực tiếp đến UIScrollView:

UILabel *subsection = [[UILabel alloc] initWithFrame:CGRectMake(0, y * h, 
    [self totalContentWidth], [tableViewDelegate rowHeight])]; 
[subsection setText:subsectionName]; 
[subsection setTextAlignment:NSTextAlignmentCenter]; 

[subSectionRows setValue:subsection forKey:key]; 

[self addSubview:subsection]; 

và sau đó đưa họ vào phía trước, mà

- (void) bringSubsectionsToFront { 
    for (UIView* row in [self.subSectionRows allValues]) { 
     [self bringSubviewToFront:row]; 
    } 
} 

Hành vi này là khó hiểu đối với tôi. Nếu tôi nhìn vào số UIView.layer.zPosition của tất cả các bản xem trước của UIScrollView, tất cả đều giống nhau.

Nếu tôi điều chỉnh phương pháp bringSubsectionsToFront để thay vì di chuyển nhãn ở phía trước chế độ xem có chứa các đường lưới, hành vi giống nhau.

Nhìn vào một số lớp xem nội có tác phẩm hành vi, nó trông như thể họ đang được bổ sung vào xem di chuyển với: [self insertSubview:cell atIndex:0];

tôi đang thiếu gì ở đây?

Giải pháp: verec nhận xét rằng tôi có thể tìm thấy các thanh nếu tôi thực sự muốn. Vì vậy, tôi đã lặp lại qua danh sách subview tại một điểm thích hợp, và chắc chắn đủ, có họ được. Thứ tự của các vật thể như sau:

CustomCell 
... 
UIImageView 
UIImageView 
CustomBorderView 
UILabel 
UILabel 

Giả sử đây là thứ tự z, không có thắc mắc nhãn của tôi luôn ở trên đầu.

Giải pháp trở nên đơn giản; thêm UILabel's sau khi CustomCells. Giải pháp này chỉ hoạt động vì bảng tùy chỉnh thêm CustomCells tại chỉ mục 0, mà tôi tin rằng làm cho các chỉ báo cuộn xuất hiện sau CustomCells. Nếu giả định này giữ, tôi có thể sắp xếp lại các khung nhìn khác liên quan đến CustomCells, đạt được hiệu ứng phân lớp mà tôi muốn.

Trả lời

4

Cách đơn giản nhất là sử dụng và trung gian UIView, gọi nó là 'contentView' có con là các chế độ xem bạn muốn mang đếnToFront.

Nếu nội dung đó là nội dung bên trong scrollView, nó sẽ ở lại 'bên dưới' các chỉ báo cuộn cho dù bạn chọn contentView nào ở phía trước. Thay vào đó sẽ là để quét vào scrollView tìm kiếm các chỉ số di chuyển (bạn sẽ tìm thấy chúng!) Nhưng đó là một nguy cơ tương thích, như bạn không bao giờ biết nếu/khi Apple có thể quyết định để loại bỏ/reshape/đặt lại chúng theo một số mẫu thiết kế mới (phẳng ...) ...

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