2011-04-21 2 views
10

Trong ứng dụng iphone/ios, làm cách nào để tạo lớp phủ 'tải' trong suốt bao gồm thanh điều hướng và bàn phím?Trong ứng dụng iphone/ios, cách tạo lớp phủ 'tải' trong suốt bao gồm thanh điều hướng và bàn phím?

Tôi đã thử những điều sau nhưng nó không bao gồm một trong hai thanh nav lẫn bàn phím:

UIView *overlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
overlay.backgroundColor = [UIColor colorWithWhite:0 alpha:.5]; 
[self.view addSubview:overlay]; 

Cảm ơn

+0

Nó không bao gồm navbar vì bạn cần phải thêm subview vào self.navigationController.view. Có một hệ thống phân cấp các khung nhìn, nói 1: thanh trên cùng 2: thanh điều hướng 3: thanh tab 4: chế độ xem của bạn –

Trả lời

6

Nếu bạn muốn một thư viện đơn giản mà sẽ chăm sóc nó, số điện thoại DSActivityView của David Sinclair là tốt.

+0

Âm thanh tốt, nhưng anh ấy cần tín dụng nếu chúng tôi sử dụng mã của anh ấy và tôi không chắc chắn nơi tôi có thể đặt tín dụng! – Chris

+0

@Chris Khi bạn gửi mã, bạn có cơ hội sửa đổi ** Điều khoản dịch vụ ** được liên kết với ứng dụng của bạn. Nếu bạn muốn bạn hoàn toàn có thể thay thế những gì Apple sử dụng như là mặc định, nhưng tôi chỉ để lại các ToS đó là tại chỗ và thêm các khoản tín dụng và giấy phép liên kết với bất kỳ thư viện tôi sử dụng. Ngoài ra, trên trang web của ứng dụng tôi thêm tín dụng. Kết hợp, cả hai đều che đậy nó, theo ý kiến ​​của tôi, nhưng thậm chí chỉ cần sửa đổi ToS cũng là đủ. –

2

Thêm nó vào self.view.window để thay thế. Điều đó có thể không bao gồm bàn phím mặc dù. Trong trường hợp đó, bạn cần phải tạo cửa sổ của riêng bạn. Mặc dù điều này không được khuyến cáo bởi Apple. Có nghĩa là: hãy cẩn thận và kỹ lưỡng trong việc thực hiện của bạn.

0

Bạn có thể thử tấm Hành động thay vì một cái nhìn minh bạch để tải:

actionSheetLoad = [[UIActionSheet alloc] initWithTitle:@"Loading..Please wait" delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 

[actionSheetLoading showInView:showInView]; 

Bảng hành động sẽ che phủ các quan điểm toàn bộ cho đến các nhiệm vụ nền thời gian (nói lấy dữ liệu từ máy chủ/đánh url) đang chạy.

3

đôi khi tôi lười biếng để sử dụng các thư viện khác tôi chỉ làm điều này:

// create a custom black view 
UIView *overlayView = [[UIView alloc] initWithFrame:self.navigationController.view.frame]; 
overlayView.backgroundColor = [UIColor blackColor]; 
overlayView.alpha = 0.8; 
overlayView.tag = 88; 

// create a label 
UILabel *message = [[UILabel alloc] initWithFrame:self.navigationController.view.frame]; 
[message setFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:25.0f]]; 
message.text = @"message to my dear user"; 
message.textColor = [UIColor whiteColor]; 
message.textAlignment = NSTextAlignmentCenter; 
message.tag = 99; 

// and just add them to navigationbar view 
[self.navigationController.view addSubview:overlayView]; 
[self.navigationController.view addSubview:message]; 

và sau đó gọi một phương pháp mà tìm thấy những quan điểm, mất dần chúng ra và xóa chúng:

-(void) removeOverlayViews{ 
    UIView *view = (UIView *)[self.navigationController.view viewWithTag:88]; 
    UILabel *label = (UILabel *)[self.navigationController.view viewWithTag:99]; 

    [UIView animateWithDuration:0.5 
     animations:^{ 
      view.alpha = 0.0; 
      label.alpha = 0.0; 
     } 
     completion:^(BOOL finished){ 
      [view removeFromSuperview]; 
      [label removeFromSuperview]; 
     } 
    ]; 
} 

đôi khi tôi chỉ muốn hiển thị thông báo trong vài giây nên tôi gọi ngay sau khi tôi thêm chế độ xem lớp phủ vào điều hướngController:

[self performSelector:@selector(removeOverlayViews) withObject:nil afterDelay:4]; 
+1

Bạn là người đàn ông, đây là những gì stackoverflow cần phải cung cấp, không phải thư viện khi chúng là sooooooo không cần thiết, mọi người muốn biết cách làm những điều đơn giản một cách dễ dàng, không phải thư viện, dễ dàng hơn cảm ơn bạn. Từ đây tôi xây dựng lớp phủ tải spinner tùy chỉnh của riêng mình;) – thekevshow

+1

đồng ý. nhiều câu trả lời hơn mà không cần tham khảo thư viện! chúng ta thực sự nên dạy cách viết mã không phải cách sử dụng các công cụ được tạo trước – SPillai