पर आधारित है, मैं अपने दृश्य नियंत्रकों के लिए UIPresentationController
आधारित प्रस्तुतियों पर आगे बढ़ रहा हूं लेकिन एपीआई के साथ कुछ भ्रम में भाग गया हूं।अनुकूली UIPresentationController दृश्य आकार
मेरे पास एक कस्टम साइडबार शैली दृश्य नियंत्रक प्रस्तुति है (LookInside
डब्ल्यूडब्ल्यूडीसी 2014 डेमो कोड के समान)।
इस वर्ग क्लस्टर (UIPresentationController
, UIViewControllerTransitioningDelegate
, और UIViewControllerAnimatedTransitioning
) नियमित आकार वर्ग विचारों पर स्क्रीन के किनारे से एक साइडबार के रूप में एक दृश्य नियंत्रक प्रस्तुत करता है, और कॉम्पैक्ट आकार वर्ग विचारों पर पूर्ण स्क्रीन के रूप में एक ही दृश्य नियंत्रक प्रस्तुत करता है।
आकार बदलने योग्य आईपैड लक्ष्य पर इसका परीक्षण सही व्यवहार दिखाता है: मैंने क्षैतिज आकार वर्ग को "कॉम्पैक्ट" पर सेट किया है और मेरा व्यू कंट्रोलर साइडबार से पूर्ण स्क्रीन तक स्विच करता है।
हालांकि, मुझे और अधिक ग्रैन्युलरिटी चाहिए। मैं आईफोन 6 और 6+ पर साइडबार-शैली दृश्य नियंत्रक प्रस्तुति का उपयोग करना चाहता हूं, जब डिवाइस लैंडस्केप ओरिएंटेशन में है, और पोर्ट्रेट अभिविन्यास में सभी iPhones के लिए पूर्ण-स्क्रीन शैली प्रस्तुति का उपयोग करना चाहता हूं।
//If my sidebar is going to occupy more than half the new width of the view...
if(self.sidebarTransitionController.width > size.width/2.0)
{
//Override the presentation controller's trait collection with Compact horizontal size class
sidebarPresentationController.overrideTraitCollection = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
}
else
{
//Otherwise override the trait collection with Regular
sidebarPresentationController.overrideTraitCollection = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
}
हालांकि इस करता है:
मेरी विधि- (void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
में
तो मैं पता लगाने के लिए कि क्या साइडबार स्क्रीन के बहुत ज्यादा घेरता है, मान लीजिए कि मैं निम्नलिखित शर्त का उपयोग करते हैं कुछ तर्क लागू किया कुछ भी तो नहीं। के लिए प्रलेखन:
इस संपत्ति का उपयोग किसी भी विशेषता को निर्दिष्ट करने के लिए करें जिसे आप प्रस्तुत और प्रस्तुत करने वाले दृश्य नियंत्रकों पर लागू करना चाहते हैं। आपके द्वारा निर्दिष्ट लक्षण वर्तमान में प्रभाव नियंत्रकों के लिए लागू किसी भी मौजूदा गुण को ओवरराइड करते हैं। इस संपत्ति का डिफ़ॉल्ट मूल्य शून्य है।
इस संपत्ति के लिए एक नया मूल्य असाइन करने से प्रेजेंटेशन नियंत्रक को लक्षणों के नए सेट में संक्रमण करने का कारण बनता है, जिसके परिणामस्वरूप प्रस्तुत इंटरफ़ेस में एनिमेशन हो सकता है।
प्रस्तुति नियंत्रक के लिए नया मान असाइन करने से मेरा प्रस्तुत इंटरफ़ेस किसी भी तरह से परिवर्तित नहीं होता है। (भले ही मैं overrideTraitCollection
असाइन करता हूं, UIPresentationController
UIViewControllerTransitioningDelegate
ऑब्जेक्ट के भीतर से बनाया गया है।)
मुझे क्या याद आ रही है? क्या एक और दानेदार स्तर पर UIPresentationController
के साथ अनुकूली प्रस्तुति निष्पादित करना संभव है?