2009-11-19 29 views
6

Có cách nào để thêm biểu tượng kính phóng đại thay vì dấu chấm cho trang đầu tiên của tôi, cho phép thực hiện một số tìm kiếm, sử dụng UIPageControl cho ứng dụng gốc của tôi trên iPhone không?UIPageControl dot cho một trang tìm kiếm

Tôi đã cố gắng tìm kiếm nhưng không tìm thấy câu hỏi tương tự chút nào, nhưng có vẻ như một tính năng mở rộng trong các ứng dụng của Apple.

Ai đó có thể giúp tôi với lời khuyên không?

Trả lời

7

Về cơ bản UIPageControl có một mảng _indicators chứa UIViews cho mỗi dấu chấm. Mảng này là một tài sản riêng, vì vậy bạn không nên gây rối với nó. Nếu bạn cần các biểu tượng tùy chỉnh, bạn sẽ phải thực hiện chỉ báo trang của riêng mình.

Chỉnh sửa: Sau một số nghiên cứu khác, có vẻ như bạn có thể thay thế các bản xem phụ UIPageControl để tùy chỉnh hình ảnh chấm. Kiểm tra http://www.onidev.com/2009/12/02/customisable-uipagecontrol/ để biết chi tiết. Tuy nhiên, không chắc chắn như thế nào các nhà phê bình của Apple sẽ cảm thấy về làm điều đó mặc dù.

+0

Cám ơn câu trả lời của bạn! Tôi hy vọng nó sẽ không theo cách này: -/ – Denis

+0

Tôi đã đạt được mục tiêu của mình bằng cách thêm một khung nhìn con vào UIPageControl, phía trên biểu tượng tìm kiếm (phải dành chút thời gian để tìm ra thuật toán vị trí của nó) . Nó hoạt động khi cần thiết. Dù sao, tôi phải gửi một lỗi nhỏ cho phía Apple vì không cho phép tùy biến này ra khỏi hộp. – Denis

+1

Chúng tôi đã gửi ứng dụng bằng kỹ thuật được mô tả trong liên kết mà bạn đã cung cấp mà không gặp bất kỳ sự cố nào. – hennes

1

Tôi đã tạo một lớp con UIPageControl để đạt được điều này một cách dễ dàng và hợp pháp (không có API riêng tư). Về cơ bản, tôi ghi đè lên setNumberOfPages: chèn UIImageView với biểu tượng anh ấy bên trong vòng kết nối cuối cùng. Sau đó, trên phương thức setCurrentPage: tôi phát hiện xem trang cuối có được đánh dấu hay không, để sửa đổi trạng thái của UIImageView và cũng có thể xóa màu nền của vòng tròn vì điều này sẽ tự động được cập nhật bởi các API riêng UIPageControl.

Đây là kết quả: enter image description here

Đây là mã:

@interface EPCPageControl : UIPageControl 
@property (nonatomic) UIImage *lastPageImage; 
@end 

@implementation EPCPageControl 

- (void)setNumberOfPages:(NSInteger)pages 
{ 
    [super setNumberOfPages:pages]; 

    if (pages > 0) { 

     UIView *indicator = [self.subviews lastObject]; 
     indicator.backgroundColor = [UIColor clearColor]; 

     if (indicator.subviews.count == 0) { 

      UIImageView *icon = [[UIImageView alloc] initWithImage:self.lastPageImage]; 
      icon.alpha = 0.5; 
      icon.tag = 99; 

      [indicator addSubview:icon]; 
     } 
    } 
} 

- (void)setCurrentPage:(NSInteger)page 
{ 
    [super setCurrentPage:page]; 

    if (self.numberOfPages > 1 && self.lastPageImage) { 

     UIView *indicator = [self.subviews lastObject]; 
     indicator.backgroundColor = [UIColor clearColor]; 

     UIImageView *icon = (UIImageView *)[indicator viewWithTag:99]; 
     icon.alpha = (page > 1 && page == self.numberOfPages-1) ? 1.0 : 0.5; 
    } 
} 
+0

Cảm ơn bạn. Điều này đã giúp tôi rất nhiều. Tôi thấy nó sạch hơn rất nhiều so với cách tiếp cận khác! – kekub

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