2010-06-08 11 views
38

ठीक है, तो यहां कुंजी है कि मैं आईबी का उपयोग नहीं कर रहा हूं, क्योंकि जिस व्यू के साथ मैं काम कर रहा हूं वह प्रोग्रामेटिक रूप से बनाया गया है। UIView स्क्रीन के निचले आधे भाग को कवर करता है, और इसमें बटन का एक गुच्छा है। हालांकि, मैं UIView पर अधिक बटन जोड़ने के बिना, और अधिक बटन जोड़ना चाहता हूं। ऐसा करने के लिए, मैं दृश्य के अंदर UIScrollView बनाना चाहता हूं, जो मुझे स्क्रीन से अधिक बटन जोड़ने की अनुमति देगा ताकि उपयोगकर्ता उन्हें स्क्रॉल कर सके। मुझे लगता है कि यह कैसे काम करता है।प्रोग्रामिंग के रूप में UIScrollView कैसे बनाएं?

self.manaView = [[[UIView alloc] initWithFrame:frame] autorelease]; 
self.manaView.backgroundColor = [UIColor purpleColor]; 

UIScrollView *scroll = [UIScrollView alloc]; 
scroll.contentSize = CGSizeMake(320, 400); 
scroll.showsHorizontalScrollIndicator = YES; 
[self.manaView addSubview:scroll]; 

कोड के पहले भाग मेरी UIView है, जो अच्छा काम करता है iniates, लेकिन मैं समझ नहीं प्रोग्राम के रूप में UIScrollView बनाने कैसे और देखने के लिए इसे जोड़ने, और फिर इसे करने के लिए बटन जोड़ने।

UIButton *ret2 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
ret2.tag = 102; 
ret2.frame = CGRectMake(255, 5, 60, 50); 
[ret2 setTitle:@"Return" forState:UIControlStateNormal]; 
[ret2 addTarget:self action:@selector(flipAction:) forControlEvents:UIControlEventTouchUpInside]; 
[scroll addSubview:ret2]; 

जब मैंने ऐसा किया, तो बटन बस मेरी स्क्रीन से गायब हो गया। तो मैं इसे सही तरीके से कैसे करूं? आपके सहयोग के लिए धन्यवाद!

उत्तर

26

बजाय:

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:...]; 
+1

अहह, मुझे यह काम करने के लिए initwithframe और .contentSize होना था। धन्यवाद! –

23

इस प्रोग्राम के रूप में UIScrollView बनाने के लिए आप के लिए सहायक हो सकता है:

UIScrollView *scroll = [UIScrollView alloc]; 

ऐसा करने (फ्रेम तथापि बड़ा आप स्क्रॉल दृश्य होना चाहता हूँ के लिए सेटिंग)
http://unconditionalloop.blogspot.com/2011/04/uiscrollview-programmatically.html

UIScrollView *scrollview = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    NSInteger viewcount= 4; 
    for(int i = 0; i< viewcount; i++) { 

     CGFloat y = i * self.view.frame.size.height; 
     UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, y,self.view.frame.size.width, self .view.frame.size.height)];  
     view.backgroundColor = [UIColor greenColor]; 
     [scrollview addSubview:view]; 
     [view release]; 
    }  
    scrollview.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height *viewcount); 
    [self.view addSubview:scrollview]; 
+5

मेरा मानना ​​है कि आपको काम करने के लिए '[self.view addSubview: scrollview];' करने की भी आवश्यकता है। – futurevilla216

+0

@LennyK जाहिर है कि इसे –

12

इस कोशिश,

{ 

     scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,480)]; 
     scrollview.showsVerticalScrollIndicator=YES; 
     scrollview.scrollEnabled=YES; 
     scrollview.userInteractionEnabled=YES; 
     [self.view addSubview:scrollview]; 
     scrollview.contentSize = CGSizeMake(width,height); 

    [scrollview release]; 
} 
+1

इस तरह संपादित किया गया था, मैंने अंतिम विकल्प का उपयोग किया था जिसे नैननाव ने उत्तर दिया था कि ऐसा लगता है कि यह बहुत अच्छा काम करता है लेकिन अब मैं स्क्रॉल बार देख सकता हूं लेकिन मेरा यूआई लॉक है। मतलब केवल एक ही नियंत्रण है जो काम करता है UIScrollView है ... कोई विचार ... – logixologist

0

सरल विधि: यदि आप और अधिक

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    int x = 0; 
    int y = 10; 
    for(int i=0; i<5; i++) 
    { 
     UIScrollView *scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(x, y, 50, 50)]; 
     scrollview.showsVerticalScrollIndicator=YES; 
     scrollview.scrollEnabled=YES; 
     scrollview.userInteractionEnabled=YES; 
     scrollview.backgroundColor = [UIColor greenColor]; 
     [self.view addSubview:scrollview]; 
     //scrollview.contentSize = CGSizeMake(50,50); 
     x=x+55; 

     //[self myscrollView]; 
    } 
} 
0

जरूरत है मैं lazy एक बहुत का उपयोग करें जब प्रोग्राम के रूप में यूआई बनाने, इस तरह आप कई बार बना सकते हैं:

class WorldViewController: UIViewController { 
    override func loadView() { 
     super.loadView() 
     view = scrollView 
     scrollView.addSubview(label0) 
    } 

    lazy var scrollView: UIScrollView = { 
     let instance = UIScrollView() 
     instance.backgroundColor = UIColor.blackColor() 
     return instance 
    }() 

    lazy var label0: UILabel = { 
     let instance = UILabel() 
     instance.text = "Ice caps are melting" 
     instance.textColor = UIColor.whiteColor() 
     instance.sizeToFit() 
     return instance 
    }() 

    var needLayoutContent = true 

    override func viewDidLayoutSubviews() { 
     super.viewDidLayoutSubviews() 
     if needLayoutContent { 
      let bounds = scrollView.bounds 
      let contentSize = CGSizeMake(bounds.width * 1.5, bounds.height * 1.5) 
      label0.center = CGPointMake(contentSize.width/2, contentSize.height/2) 
      scrollView.contentSize = contentSize 
      scrollView.contentOffset = CGPointMake(bounds.width * 0.25, bounds.height * 0.25) 
      needLayoutContent = false 
     } 
    } 
} 
3

एक UiScrollView प्रोग्रामिटिक

ScrView = [[UIScrollView alloc]initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)]; 
ScrView.showsVerticalScrollIndicator=YES; 
[ScrView setBackgroundColor:[UIColor yellowColor]]; 
[ScrView setScrollEnabled:YES]; 
[ScrView setContentSize:CGSizeMake(0, 700)]; 
[ScrView setShowsHorizontalScrollIndicator:YES]; 
[ScrView setShowsVerticalScrollIndicator:YES]; 
[self.view addSubview:ScrView]; 
बनाएं
संबंधित मुद्दे