Amacım, sadece değişen ok ofsetiyle bir UIPopoverController için aynı koordinatları tutmaktır. Yani temelde her birinin bir düğmeyi gösteren üç düğmesinin var. Bu popolu sunarken ekranda pozisyon değiştirir, ama bunu istemiyorum. screenoshots daha net bir görünüm olmak için: Apple'ın dahili içinde UIPopoverViewController sınıfı ile olduğu gibiUIPopoverController'ı sadece ok ofseti değiştirerek aynı konumda hazırlayın
cevap
I (varsayılan) sol üst yerine üst merkezinin olmak için oku istedik.
UIPopoverController ürününün popoverLayoutMargins
özelliğini ayarlayarak aşağıdaki sonucu (ekran görüntüsü) almayı başardım. Populasyonun nerede gösterileceğini belirlemek için UIPopoverController'ın dahili hesaplamalarında kullanılan ekran alanını azaltmak için kullanabilirsiniz.
kodu:
// Get the location and size of the control (button that says "Drinks")
CGRect rect = control.frame;
// Set the width to 1, this will put the anchorpoint on the left side
// of the control
rect.size.width = 1;
// Reduce the available screen for the popover by creating a left margin
// The popover controller will assume that left side of the screen starts
// at rect.origin.x
popoverC.popoverLayoutMargins = UIEdgeInsetsMake(0, rect.origin.x, 0, 0);
// Simply present the popover (force arrow direction up)
[popoverC presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
Ben yukarıdaki değişiklikler yaparak istenilen sonucu elde etmek mümkün olacak düşünüyorum.
popoverLayoutMargins ayarı harika çalışıyor. Teşekkürler. – Bastek
Bir tedavi çalışması, teşekkürler. – rosshump
Ok ucunu tam olarak kaynak görünümü içindeki bir noktaya yerleştirmenin bir yolu var mı? Tüm ekranı kaynak görünümü olarak kullanıyorum, böylece cihaz yönelimi değiştiğinde 1x1 birim boyutunda olan kaynak rect'i değiştiriyorum. Sorun şu ki, okun olması gereken yerde sağda hafif. – rraallvv
Sen bunu yapamaz. Ancak, kendi popover view kontrol cihazınızı (sadece bazı çok basit 2D geometri ve UIView'nin dokümanlarında biraz kazma) uygulamak oldukça basit ve mantıklı olmalıdır.
Apple'ın popoverleri ile yapılabilir. Tablo görünümü satırlarındaki pop'ları izlerseniz, ok, tablo kaydırılırken satırı takip edebilir. Dolayısıyla, ok bir görünümde bir doğrultuya bağlanmışsa, bu görünümü taşıyabilir ve ok takip eder. – Gabriel
Ancak içerik rect orijinal konumunda mı kalacak? Ortalaştırılmak için oku takip etmeyecek mi? –
Hayır. Uygulamamdaki popover büyük, tüm alan en alt seviyeye kadar. Ok, bölünmüş bir görünümün ana görünümünde tablo görünümünün bir satırını işaret ediyor. Sonunda yeni bir satır göründüğünde ve tablo görünümü kaydırıldığında, areow satırı takip eder. – Gabriel
Evet, bunu yapabilirsiniz. Alfa = 0.0f ile bir aux görünümü oluşturmalı ve oku yönlendirmek için kullanmalısınız. Örneğin
:
auxView = [[UIView alloc] initWithFrame:firstButton.frame];
auxView.alpha = 0.0 ;
auxView.userInteractionEnabled = NO;
[firstButton.superView addSubview:auxView];
[auxView release];
Tamam, okunun kılavuz olarak bu görüşü kullanarak artık açık popover. İstersen o hamle için
auxView.frame = secondButton.frame;
Kullanım animasyonlar:
[thePopoverController presentPopoverFromRect:auxView.bounds inView:auxView
permitedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
Ve şimdi sadece görünümü taşımak zorunda.
Bu tür bir ok için, bir başka şey de, okun düğmeye dokunmasını tercih ederim. Sen kullanabilirsiniz: Benim popover için
presentPopoverFromRect:CGRectInset(auxView.bounds, 4.0, 4.0)
+1, bu ilginç bir soru. –