2011-07-21 17 views
5

Bu yüzden UIScrollView numaralı telefondan bir grup düğme içeren bir view var. Kullanıcı bir düğmeye bastığında, seçilen düğmeye işaret etmek için bir UIPopOverController istiyorum. Bu tür işler, ama popover yanlış boyut ve görünümde rastgele bir noktaya işaret ediyor. İşte benim kodum. Şimdiden teşekkürler. popover büyüklüğü ile sorun daha UIPopOverController boyutunda yardım

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

: popover içinde olan görünümünde, ben:

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

ve her iki günlükleri eşleştirme. Bu yüzden her şeyin doğru çalışması gerektiğini düşünüyorum. Ama öyle değil. İşte bir ekran görüntüsü. Kodumdan daha fazlasına ihtiyacınız olursa haberim olsun. Şimdiden teşekkürler. Ben fark

screen shot of the error

cevap

1

:

UILabel *hinweis; 
hinweis.text = @"..."; 
hinweis.frame = CGRectMake(x,y,width,800); 
[hinweis sizeToFit]; 
: Bir değişken yükseklikteki UILabel ile yapmak başardı

Ok için: self.parentViewController.view gibi farklı bir inView paramını denediniz mi?

+0

arada öğrendiğim @JaspreetSingh bir tableView için contentOffset kullanmak için, bir scrollView için analog olmalıdır. 'CGRect f = [tableView rectForRowAtIndexPath: indexPath]; CGPoint yOffset = [tableView contentOffset]; CGRect çerçevesi = CGRectMake (f.origin.x, f.origin.y + 45 - yOffset.y, 200, 40); [self.poc presentPopoverFromRect: çerçeve ... ' –

+0

Ayrıca, UILabel o başlatmak gerekir. –

23

ilk şey button.frame değil dikdörtgenden için button.bounds kullanarak gerektiğidir. Bu UIView özellikleri arasındaki farkın:

bir görünüm geometrisi çerçevesi, bağlar, ve merkezi özellikleri ile tanımlanır. Çerçeve özelliği, 'un kökenini ve boyutlarını süper görünümünün koordinat sisteminde tanımlar ve genellikle görüntünün boyutunu veya konumunu ayarlamak için düzen sırasında kullanılan şeklindedir.

Sınırlar özelliği, göründüğü ve neredeyse yalnızca özel çizim kodunda kullanıldığı için görünümün iç boyutlarını tanımlar.

Bunu setPopoverContentSize mesajı kullanarak popover denetleyici yüksekliğini ayarlayabilirsiniz: Sadece popover büyüklüğüne ilişkin

// 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" öğesinin "frame" olarak değiştirilmesini biraz daha iyi hale getirdi. Ama nokta sorunun parçası düğmeleri 'UIScrollView' içinde olmasından dolayı olduğunu düşünüyorum, bu yüzden popover sunulduğunda origional düğme çerçevesi artık çerçevedir. Ben popover – Andrew

+0

@RedBlueThing içindeki metnin boyutuna bağlı olarak değiştirmek istiyorum çünkü Ayrıca, ben böyle popover çerçevesini ayarlayamıyor: Teşekkür sevgili onun mükemmel –

+0

çalışma Zevkle :) – RedBlueThing

İlgili konular