2011-11-03 7 views
7

कोई भी जानता है कि खोज बार पर क्लिक करने के बाद, किसी को भी धुंधले काले रंग का आकार बदलने का तरीका जानें?UISearchDisplayController का आकार बदल गया काला ओवरले

जब मैं रद्द किया गया क्लिक करता है तो मुझे समस्या होती है, तो तालिकादृश्य रद्द होने के बाद एनिमेटेड व्यय होगा।

मैं इसका परिणाम तालिकादृश्य का आकार बदलने के लिए उपयोग कर रहा हूं।

-(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]; 
} 

जब खोज बार पर क्लिक किया गया, तो मेरे परिभाषित आकार के बजाय ग्रे ओवरले भरा हुआ है।

enter image description here

enter image description here

जब क्लिक बटन को रद्द करने, देखने वापस व्यय होगा। enter image description here

+1

टॉम से यह जवाब देने के लिए UISearchDisplayController से xib/स्टोरीबोर्ड खोजें प्रदर्शन नियंत्रक को बदलने स्विफ्ट ने मेरी समस्या हल की: http://stackoverflow.com/a/4128659/675486 –

उत्तर

1

मैंने सोचा कि खोज डिस्प्ले नियंत्रक के पास एक अलग तालिकादृश्य है, इसलिए मेरा अनुमान है कि आपको इसे आकार देने की आवश्यकता होगी। की तर्ज पर

कुछ: <yourSearchViewController>.view.frame =self.tableView.frame;

या आप वर्ग चर के रूप में यह नहीं है, तो, एक तरीका है जिसके यह तर्क के रूप में प्राप्त करता है, जैसे में:

-(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 आप करना चाह सकते हैं इसे उपclass और स्थानीय रूप से अपने दृश्य गुणों को ओवरराइड करें।

आशा है कि इससे मदद मिलती है!

+0

नोटिन नहीं है जी 'UISearchDisplayController' में' view' की तरह। आपका समाधान एक त्रुटि देता है। – thesummersign

+0

यह एक संकेत था कि आपको क्या देखना चाहिए।यदि आप नियंत्रकों के गुणों को देखने में कुछ मिनट लंबा खर्च करते हैं, तो आप देखेंगे कि _does_ के पास 'searchResultsTableView' के नाम पर विशिष्ट दृश्य है। स्रोत: http://developer.apple.com/library/ios/#documentation/uikit/reference/UISearchDisplayController_Class/Reference/Reference.html – Wolfert

+0

मैं नियंत्रक की '.h' फ़ाइल के माध्यम से गया और 'UIView * _view' पाया लेकिन ऐसा लगता है कि इसका खुलासा नहीं हुआ है। – thesummersign

0

UISearchDisplayController का अपना टेबलव्यू है जो कि आसान नहीं है। मैं इस तरह से कुछ आया और अभी भी एक बेहतर समाधान की तलाश में हूं।

-(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]; 
} 

उपरोक्त कोड पृष्ठभूमि को पारदर्शी पर सेट करता है लेकिन लगता है कि फ्रेम आकार को चुपचाप अनदेखा कर रहा है।

संपादित करें: मैं इस here को मजबूत समाधान को हल किया। यह मेरे जीवन को बचाया।

+0

इसके अलावा मैंने कस्टम सेल्स का उपयोग किया जो इस तरह की नकल करते हैं जैसे कि यह आवश्यक चौड़ाई में ठीक से फिट बैठता है। – thesummersign

10

मैंने मंद किए गए ओवरले फ्रेम को स्थानांतरित करने के लिए कई उत्तरों को संयुक्त किया।

1: UISearchDisplayController वर्ग

@interface MySearchController : UISearchDisplayController 

2 ओवरराइड: ओवरराइड setActive समारोह

- (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: MySearchController

+0

niiiice। मेरे लिए काम करता है – MrTristan

+0

चौड़ाई बदलने के लिए इसका इस्तेमाल करें। धन्यवाद!!! – AlexanderZ

+0

यह इस मुद्दे के लिए सबसे अच्छा समाधान है। धन्यवाद! –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^