2011-07-21 14 views
5

के साथ सहायता करें तो मेरे पास UIScrollView में बटन के समूह के साथ view है। जब उपयोगकर्ता बटन दबाता है, तो मैं चयनित बटन पर पॉइंटिंग प्रदर्शित करने के लिए एक UIPopOverController चाहता हूं। यह काम करता है, लेकिन पॉपओवर गलत आकार है और दृश्य में यादृच्छिक बिंदु को इंगित करता है। मेरा कोड यहाँ है। अग्रिम में धन्यवाद।UIPopOverController आकार

-(void)detail:(id)sender{ 
    UIButton *button = sender; 
    NSLog(@"tag = %i", button.tag); 

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    self.popover = [[UIPopoverController alloc] initWithContentViewController:navController]; 
    self.popover.delegate = self; 
    [self.popover presentPopoverFromRect:button.bounds inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
} 

पॉपओवर के आकार के साथ समस्या से: दृश्य पॉपओवर के अंदर है कि में, मैं है:

self.contentSizeForViewInPopover = scroll.contentSize; 
NSLog(@"%f, %f", scroll.contentSize.height, scroll.contentSize.width); 
NSLog(@"showing: %f, %f", self.contentSizeForViewInPopover.height, self.contentSizeForViewInPopover.width); 

और दोनों लॉग मिलान कर रहे हैं। तो मुझे लगता है कि सबकुछ ठीक से काम करना चाहिए। लेकिन ऐसा नहीं है। यहां एक स्क्रीन शॉट है। अगर आपको मेरे कोड की अधिक आवश्यकता है तो मुझे बताएं। अग्रिम में धन्यवाद।

screen shot of the error

उत्तर

1

केवल पॉपओवर के आकार के बारे में:

UILabel *hinweis; 
hinweis.text = @"..."; 
hinweis.frame = CGRectMake(x,y,width,800); 
[hinweis sizeToFit]; 
: मैं एक चर heighted UILabel के साथ यह करने के लिए प्रबंधित

और तीर के लिए: क्या आपने self.parentViewController.view जैसे अलग-अलग दृश्य देखा है?

+0

इस दौरान मुझे पता चला सामग्री का उपयोग करने के लिए तालिका के लिए ऑफसेट देखें, यह scrollView के लिए एनालॉग होना चाहिए। 'सीजीआरएक्ट एफ = [टेबल व्यू रेक्टफॉररोएट इंडेक्सपैथ: इंडेक्सपाथ]; CGPoint yOffset = [tableView सामग्री ऑफ़सेट]; सीजीआरईटी फ्रेम = सीजीआरईटीमेक (f.origin.x, f.origin.y + 45 - yOffset.y, 200, 40); [self.poc presentPopoverFromRect: फ्रेम ... ' –

+0

इसके अलावा, आप प्रारंभ करने में कि UILabel की जरूरत है। –

23

पहली बात मैंने देखा है कि आप नहीं button.frame आयत से के लिए button.bounds का उपयोग करना चाहिए है। इन UIView गुण के बीच अंतर:

एक दृश्य की ज्यामिति इसके फ्रेम, सीमा, और केंद्र गुण द्वारा परिभाषित किया गया है। फ्रेम प्रॉपर्टी के मूल और आयामों को इसके पर्यवेक्षण की समन्वय प्रणाली में दृश्य को परिभाषित करती है और आमतौर पर दृश्य के आकार या स्थिति को समायोजित करने के लिए लेआउट के दौरान उपयोग की जाती है।

सीमा संपत्ति दृश्य के आंतरिक आयामों को परिभाषित करती है क्योंकि उन्हें देखती है और लगभग पूरी तरह से कस्टम ड्राइंग कोड में उपयोग की जाती है।

आप अपने setPopoverContentSize संदेश का उपयोग कर अपने popover नियंत्रक की ऊंचाई सेट कर सकते हैं:

// so something like this ... 
[self.popover setPopoverContentSize:CGSizeMake(320, 460)]; 
// and to bind the popover to your button 
[self.popover presentPopoverFromRect:button.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
+0

बदलते '' presentPopoverFromRect' frame' यह थोड़ा बेहतर बना दिया है। लेकिन मुझे लगता है बिंदु समस्या का एक हिस्सा तथ्य यह है कि बटन एक 'UIScrollView' में हैं की वजह से है, तो मूल बटन फ्रेम नहीं रह गया है फ्रेम जब पॉपओवर प्रस्तुत किया जाता है है। इसके अलावा, मैं उस तरह पॉपओवर फ्रेम सेट नहीं कर सकता क्योंकि मैं पॉपओवर – Andrew

+0

@RedBlueThing अंदर पाठ के आकार के आधार बदलने के लिए करना चाहते हैं: धन्यवाद प्रिय अपनी कार्यशील सही –

+0

@JaspreetSingh मेरा सौभाग्य :) – RedBlueThing

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