डिवाइस अभिविन्यास पर UITextVIew स्थिति सेट करें

मैं स्क्रीन के केंद्र में एक UITextView की स्थिति में हूं, जो ठीक काम करता है चाहे मैं परिदृश्य या चित्र स्थिति (आईफोन या आईपैड) पर हूं। समस्या यह है कि जब मैं डिवाइस को घुमाता हूं तो यह केंद्र में नहीं रहता है। मैंने सोचा कि यह स्वचालित रूप से केंद्र में रहेगा।

चूंकि टेक्स्ट व्यू दृश्य में बना है, विल्लएपियर मैं सोच रहा हूं कि डिवाइस अभिविन्यास पर दृश्य को रीफ्रेश करने का कोई तरीका है या नहीं। या शायद बस दृश्य को स्थानांतरित करने के लिए।

नीचे मेरा कोड:

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    UITextView *infoTextView = [[UITextView alloc] init];
    infoTextView.frame = CGRectMake(0, 0, 300.0, 300.0);
    infoTextView.center = CGPointMake(CGRectGetWidth(self.view.bounds)/2.0f, CGRectGetHeight(self.view.bounds)/2.0f);
    infoTextView.backgroundColor = [UIColor clearColor];
    NSString *anotherViewText = @"This is the content";
    infoTextView.dataDetectorTypes = UIDataDetectorTypeLink;
    infoTextView.text = anotherViewText;
    [infoTextView setFont:[UIFont fontWithName:@"ArialMT" size:18]];
    infoTextView.editable = NO;
    infoTextView.textAlignment=NSTextAlignmentCenter;
    [self.view addSubview:infoTextView];  
}
0

4 उत्तर

कोड में इन विधि का प्रयोग करें। और आपको लैंडस्केप कोड लिखते हैं - (शून्य) भूमिस्केपफ्रेम और अपने पोर्ट्रेट कोड को अंदर लिखें - (शून्य) potraitFrame

#pragma mark - Auto rotate methods
#pragma mark for pre - iOS 6

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
BOOL returnval=NO;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    if(interfaceOrientation==UIInterfaceOrientationPortrait||interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown)
    {
        [self potraitFrame];
    }
    else
    {
        [self landScapeFrame];
    }
    returnval = YES;
}
else
{
    [self landScapeFrame];
    returnval= (interfaceOrientation==UIInterfaceOrientationLandscapeLeft || interfaceOrientation==UIInterfaceOrientationLandscapeRight);
}
return returnval;
}

 #pragma mark for - iOS 6

 -(BOOL)shouldAutorotate
 {
return YES;
 }

 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation  duration:(NSTimeInterval)duration {

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
           if(toInterfaceOrientation==UIInterfaceOrientationPortrait||toInterfaceOrientation==UIInterfaceOrientationPortraitUpsideDown)
    {
        [self potraitFrame];
    }
    else
    {
        [self landScapeFrame];
    }
}
else
{
    [self landScapeFrame];
}

}

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
 UIInterfaceOrientationLandscapeLeft;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    return self.interfaceOrientation;
}
else
{
    UIInterfaceOrientation crntOrntatn = self.interfaceOrientation;
    return UIInterfaceOrientationIsLandscape(crntOrntatn) ? crntOrntatn : UIInterfaceOrientationLandscapeLeft;
}

}

 -(NSUInteger)supportedInterfaceOrientations
 {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    return UIInterfaceOrientationMaskAll;   
}
else
{
    return UIInterfaceOrientationMaskLandscape;
}
}
0
जोड़ा
आप इस कोड को काम करने वाले किसी भी दिशा में डिवाइस को घुमा सकते हैं!
जोड़ा लेखक Manimaran, स्रोत
यह बिल्कुल भयानक समाधान है।
जोड़ा लेखक kkodev, स्रोत

कोड को इसके साथ बदलें:

UITextView *infoTextView = [[UITextView alloc] init];

infoTextView.frame = CGRectMake(0, 0, 300.0, 300.0);

infoTextView.center = self.view.center;

infoTextView.autoresizingMask = UIViewAutoresizingNone;

infoTextView.backgroundColor = [UIColor clearColor];

NSString *anotherViewText = @"This is the content";

infoTextView.dataDetectorTypes = UIDataDetectorTypeLink;

infoTextView.text = anotherViewText;

[infoTextView setFont:[UIFont fontWithName:@"ArialMT" size:18]];

infoTextView.editable = NO;

infoTextView.textAlignment=NSTextAlignmentCenter;

[self.view addSubview:infoTextView];
0
जोड़ा
यह @ आर्मंड का कोड है, मैंने अभी इसे ठीक किया है (या कम से कम कोशिश की है)। आपको और अधिक विशिष्ट होना चाहिए, जो वह हिस्सा है जिसे आप नहीं प्राप्त करते हैं?
जोड़ा लेखक Levi, स्रोत
बस 2 बाधाएं जोड़ें (एक लंबवत और एक क्षैतिज) जो दृश्य के केंद्र को अपने पर्यवेक्षण केंद्र से जोड़ता है
जोड़ा लेखक Levi, स्रोत
मैं आपको कुछ डब्ल्यूडब्ल्यूडीसी वीडियो देखने की सलाह देता हूं, क्योंकि यह काफी बुनियादी चीजें है
जोड़ा लेखक Levi, स्रोत
क्या आप कृपया इस कोड को समझा सकते हैं?
जोड़ा लेखक Boggartfly, स्रोत
मैं बाधाओं को लागू करने की कोशिश कर रहा हूं ताकि मेरी UITextField स्क्रीन के केंद्र में अभिविन्यास परिवर्तनों पर भी दिखाई दे। मुझे इसे 1 अभिविन्यास के लिए मिला, यह दूसरों के लिए विफल रहता है।
जोड़ा लेखक Boggartfly, स्रोत
क्या आप इसे तेजी से शब्दों में समझा सकते हैं? संभव कोड क्या है? मेरी सीमा यह है कि मैं इसके लिए .sks फ़ाइल का उपयोग नहीं कर रहा हूं।
जोड़ा लेखक Boggartfly, स्रोत
जोड़ा लेखक Boggartfly, स्रोत

UIViewController के मामले में UIView या viewDidLayoutSubviews के मामले में layoutSubviews में अपने सबव्यूज़ को लेआउट करना एक अच्छा अभ्यास है। तो आपके मामले में, आप बस कर सकते हैं:

- (void)viewDidLayoutSubviews {
  [super viewDidLayoutSubviews];
  self.infoTextViewCenter = self.view.center;
}

ऐसा लगता है कि आपके पास एक संपत्ति पर infoTextView है।

वैकल्पिक और बेहतर तरीका Autolayout का उपयोग करना है और अपने दृश्य में क्षैतिज और ऊर्ध्वाधर स्थिति बाधाओं को जोड़ना है।

0
जोड़ा

एक और समाधान सिर्फ आपके टेक्स्ट व्यू पर बाधाओं को सेट करना है और इसे अपने पर्यवेक्षण पर लंबवत और क्षैतिज रूप से गठबंधन करने के लिए कहें।

0
जोड़ा