2011-11-03 33 views
7

ai biết cách thay đổi kích thước màu đen bị mờ quá mức, khi bạn nhấp vào thanh tìm kiếm?thay đổi kích thước lớp phủ màu đen mờ của lớp phủ UISearchDisplayController

tôi gặp sự cố khi tôi nhấp vào hủy bỏ chế độ xem bảng sẽ chi tiêu sau đó hoạt ảnh để biến mất.

tôi sử dụng tùy chọn này để đổi kích thước bảng xem kết quả của mình.

-(void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView { 
    tableView.frame =fTableView.frame;//CGRectMake(26, 100, 280, 310); //fTableView.frame; 
    tableView.backgroundColor = [UIColor colorWithRed:243.0/255.0 green:236.0/255.0 blue:212.0/255.0 alpha:1]; 
} 

khi được nhấp vào thanh tìm kiếm, lớp phủ màu xám đầy đủ thay vì kích thước đã xác định của tôi.

enter image description here

enter image description here

khi nhấp vào nút hủy, quan điểm sẽ rộng trở lại. enter image description here

+1

Câu trả lời này từ Tom Swift giải quyết được vấn đề của tôi: http://stackoverflow.com/a/4128659/675486 –

Trả lời

1

Tôi nghĩ searchDisplayController sở hữu một bảng xem riêng biệt, do đó, tôi đoán là bạn sẽ cần phải thay đổi kích thước trang đó.

cái gì đó dọc theo dòng: <yourSearchViewController>.view.frame =self.tableView.frame;

hoặc nếu bạn không có nó như biến lớp, trong một phương pháp mà nhận nó như là đối số, ví dụ:

-(void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView { 
    controller.view.frame = self.tableView.frame; 
    tableView.backgroundColor = [UIColor colorWithRed:243.0/255.0 green:236.0/255.0 blue:212.0/255.0 alpha:1]; 
} 

Alternativily bạn có thể muốn subclass nó và ghi đè lên các thuộc tính view của nó cục bộ.

Hy vọng điều này sẽ hữu ích!

+0

Không có gì g như 'view' trong' UISearchDisplayController'. Giải pháp của bạn đưa ra một lỗi. – thesummersign

+0

Đó là một dấu hiệu về những gì bạn nên tìm kiếm.Nếu bạn dành vài phút để xem xét các thuộc tính của trình điều khiển, bạn sẽ nhận thấy nó _does_ có chế độ xem cụ thể dưới tên 'searchResultsTableView'. source: http://developer.apple.com/library/ios/#documentation/uikit/reference/UISearchDisplayController_Class/Reference/Reference.html – Wolfert

+0

Tôi đã đi qua tập tin '.h' của bộ điều khiển và tìm thấy' UIView * _view' nhưng có vẻ như nó không bị lộ ra. – thesummersign

0

UISearchDisplayController không sở hữu chế độ xem bảng riêng mà không dễ chế ngự. Tôi bắt gặp một cái gì đó như thế này và vẫn đang tìm kiếm một giải pháp tốt hơn.

-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller 
{ 
    [controller.searchResultsTableView setDelegate:self]; 
    CGFloat gr = 12.0; 
    controller.searchResultsTableView.backgroundColor = [UIColor colorWithRed:gr green:gr blue:gr alpha:0.0]; 
    [controller.searchResultsTableView setSeparatorStyle:UITableViewCellSelectionStyleNone]; 
    CGRect searchTableFrame = CGRectMake(7, 105, 305, 292); 
    [controller.searchResultsTableView setFrame:searchTableFrame]; 
} 

Mã trên không đặt nền thành trong suốt nhưng dường như âm thầm bỏ qua kích thước khung.

CHỈNH SỬA: SOLVED Tôi đã tìm thấy giải pháp mạnh mẽ cho here này. Điều này đã cứu mạng tôi.

+0

Ngoài ra tôi đã sử dụng các ô tùy chỉnh mô phỏng giao diện như thể nó vừa với chiều rộng yêu cầu. – thesummersign

10

Tôi đã kết hợp một số câu trả lời để di chuyển khung lớp phủ bị mờ.

1: ghi đè UISearchDisplayController lớp

@interface MySearchController : UISearchDisplayController 

2: ghi đè setActive chức năng

- (void)setActive:(BOOL)visible animated:(BOOL)animated 
{ 
[super setActive: visible animated: animated]; 

//move the dimming part down 
for (UIView *subview in self.searchContentsController.view.subviews) { 
    //NSLog(@"%@", NSStringFromClass([subview class])); 
    if ([subview isKindOfClass:NSClassFromString(@"UISearchDisplayControllerContainerView")]) 
    { 
     CGRect frame = subview.frame; 
     frame.origin.y += 10; 
     subview.frame = frame; 
    } 
} 

} 

3: thay đổi Controller xib/storyboard tìm kiếm Hiển thị từ UISearchDisplayController để MySearchController

+0

niiiice. hoạt động cho tôi – MrTristan

+0

Sử dụng nó để thay đổi chiều rộng. CẢM ƠN BẠN!!! – AlexanderZ

+0

Đây là giải pháp tốt nhất cho vấn đề này. Cảm ơn! –

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