2011-11-08 13 views
15
  1. साथ मोडल दृश्य नियंत्रक के आकार वहाँ एक दृश्य नियंत्रक कि रीति से प्रस्तुत किया गया है एक स्टोरीबोर्ड segue का उपयोग कर आकार बदलने के लिए किसी भी तरह से है?iOS5 - स्टोरीबोर्ड

  2. मैं फ्लिप संक्रमण के साथ इस मोडल व्यू कंट्रोलर से एक और व्यू कंट्रोलर कैसे प्रस्तुत करूं?

अगर मैं के रूप में यह परिभाषित शैली = मोडल, प्रस्तुति = डिफ़ॉल्ट, संक्रमण = फ्लिप क्षैतिज यह सिर्फ अजीब लग रहा है (पृष्ठभूमि सफेद है)।

Thx!

+3

ध्यान दें, आप लगभग हमेशा एक modalViewController ले जाना चाहते हैं पूरी स्क्रीन ऐसा इसलिए है क्योंकि modalViewController दिखाई देने के बाद modalViewController के अंतर्गत "नियंत्रक" दृश्य नियंत्रक हटा दिया जाता है। इस प्रकार, यदि आप अन्य दृश्य नियंत्रक को "नीचे" दिखाए जाने के इरादे से अपने मोडल व्यू कंट्रोलर के साथ स्क्रीन के आधे हिस्से को कवर करने का प्रयास कर रहे थे, तो यह काम नहीं करेगा। यह सफेद दिखाएगा। मैं पैरेंट व्यू के सबव्यूव के रूप में एक दृश्य जोड़कर इस कार्यक्षमता को पूरा करता हूं। – bearMountain

+0

आपकी टिप्पणी ढांचे के व्यवहार के संदर्भ में सही हो सकती है, लेकिन निश्चित रूप से आप जो चाहते हैं वह आपके ऐप के यूएक्स द्वारा निर्धारित किया जाना चाहिए और उपयोगकर्ता के लिए सबसे अच्छी समझ है, यूआई ढांचे के अंतर्निहित अंतःक्रियाओं को नहीं। आपका यूएक्स एक कस्टम संवाद के अंदर अपने मोडल यूआई पेश करने का निर्देश दे सकता है, इस मामले में आपको अभी भी संवाद के पीछे सामग्री को देखना होगा। एक कस्टम segue और unind segue आसानी से आवश्यकतानुसार संवाद उप-दृश्य (अंधेरा, संवाद सामग्री) को जोड़कर/हटाकर पिछले नियंत्रक के दृश्य को हटाए बिना इसका ख्याल रख सकता है। – Marchy

+0

http: // stackoverflow पर एक कार्य समाधान है।कॉम/प्रश्न/25250510/सेट-साइज-ऑफ-आईफोन-व्यू-कंट्रोलर/25251507 # 25251507 –

उत्तर

34

हां। इंटरफ़ेस बिल्डर में व्यू कंट्रोलर का चयन करें और एट्रिब्यूट इंस्पेक्टर सेट आकार में फ्रीफॉर्म (अनुमानित से) का चयन करें। फिर दृश्य का चयन करें और जो भी आपको चाहिए, उसके माप को सेट करें। नोट करने के लिए एक महत्वपूर्ण बिंदु दृश्य नियंत्रक में एनआईबी से रीसाइज़ व्यू अनचेक करें अन्यथा दृश्य फिर से पूर्ण स्क्रीन बन जाता है।

दूसरे प्रश्न के बारे में निश्चित नहीं है अगर पृष्ठभूमि एकमात्र समस्या है तो क्या आप रंग सेट नहीं कर सकते हैं?

उम्मीद है कि इससे मदद मिलती है।

+4

यह काम नहीं करता है, कम से कम मेरे मामले में और मैं वही करता हूं जो आपने कहा था। कोई उपाय? धन्यवाद। एनआईबी चेकबॉक्स से आकार बदलने का उल्लेख करने के लिए – Ricardo

+8

+1, मैं कभी भी अन्यथा नहीं पाया होता। – DonnaLea

+0

आप आदमी हैं !!!! आपको बहुत - बहुत धन्यवाद! –

1

मैं भी ऐसा ही करने की कोशिश कर रहा हूँ, और स्टोरीबोर्ड में मेरी ModalView छोटा होता है, लेकिन सिम्युलेटर में यह सब स्क्रीन को शामिल किया गया ...

मैं इस iPhone में नहीं किया जा सकता लगता है ... (मैंने आईपैड में एक साधारण परीक्षण किया और मोडल व्यू काम किया)।

मैं आईफोन के लिए अर्द्ध पारदर्शी दृश्य का प्रयास करूंगा और मॉड्यूल व्यू का उपयोग नहीं करूंगा।

उम्मीद है कि इससे मदद मिलती है।

5

आप कस्टम UIStoryboardSegue के साथ एक सामान्य रूप से प्रस्तुत दृश्य का आकार बदल सकते हैं। स्टोरीबोर्ड में, मोडल के बजाय सेग्यू को कस्टम पर सेट करें। सेगु क्लास में, इसे अपने यूआईएसटीरीबोर्डसेग ओवरराइड का नाम दें।

UIStoryboardSegue को ओवरराइड करने के लिए, आपको अपनी .h फ़ाइल में कुछ भी आवश्यकता नहीं होगी। यह कुछ इस तरह के रूप में दिखाई देगा:

MyStoryboardSegue.h:

#import <UIKit/UIKit.h> 
@interface MyStoryboardSegue : UIStoryboardSegue 
@end 

MyStoryboardSegue.m में, कोड होगा:

#import "MyStoryboardSegue.h" 

@implementation MyStoryboardSegue 


- (void)perform 
{ 
    id sourceController = self.sourceViewController; 
    id destinationController = self.destinationViewController; 
    UIView *destinationView = [destinationController view]; 
    CGFloat x, y, w, h; 

    [destinationController setModalPresentationStyle:UIModalPresentationFormSheet]; 
    [destinationController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
    [sourceController presentViewController:destinationController animated:YES completion:nil]; 

/* 
You have to present the view first, and then resize it. That's because, 
as far as I can tell, when you present your view modally, a new view is created 
that covers the screen in a black semi-transparent mask to give the shadow effect, 
and a container view is placed in the middle of this view that in turn holds the 
view you are presenting. Your view automatically resizes to the size of this 
container view, so that's the view you need to resize to make your view controller 
appear the size you desire. You must present your modal view first 
because until you do, the container view doesn't exist. The following code 
resizes the container view (which is now your modal view's superview) and then 
resets the position of the container view to the center of the source view that 
is presenting the modal view so everything looks nice and centered. 
*/ 
    x = destinationView.superview.frame.origin.x; 
    y = destinationView.superview.frame.origin.y; 
    w = 400; // Your desired modal view width 
    h = 400; // Your desired modal view height 
    destinationView.superview.frame = CGRectMake(x, y, w, h); 
    destinationView.superview.center = [[sourceController view] center]; 
} 

@end 
+0

मैंने इसे XIN 5 में एक UINavigationController (यदि यह मायने रखता है) के अंदर किया है और यह तब तक काम नहीं कर रहा है जब तक कि मुझे कुछ याद नहीं आ रहा है ... –