2010-06-08 34 views
38

Tamam, buradaki anahtar IB ile hiç kullanmıyorum, çünkü çalıştığım Görünüm program aracılığıyla oluşturuldu. UIView, ekranın alt yarısını kaplar ve üzerinde bir düğme düğmesi vardır. Ancak, UIView ürününe daha fazla tıklama yapmadan daha fazla düğme eklemek istiyorum. Bunu yapmak için, ekranın içinde daha fazla düğme ekleyebilmem için UIScrollView görünümünü yapmak istiyorum. Bence böyle çalışıyor.UIScrollView Program aracılığıyla nasıl oluşturulur?

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]; 

kodunun ilk bölümü inşaat büyük benim UIView, iniates ama programlı UIScrollView yapmak ve görüş eklemek ve sonra buna düğmeler eklemek anlamaya olamaz.

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]; 

Bunu yaptığımda, düğme ekranımdan kaybolacaktı. Peki bunu doğru şekilde nasıl yaparım? Yardımın için teşekkürler!

cevap

26

yerine:

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

Ahhh, Çalışması için AND .contentSize ile birlikte olmalıydım. Teşekkür ederim! –

23

Bu programlı UIScrollView oluşturmak için size faydalı olabilir:

UIScrollView *scroll = [UIScrollView alloc]; 

bunu (kaydırma görünümü olmak ancak büyük istediğiniz kareyi ayarlama)
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

Ayrıca çalışmanız için '' [self.view addSubview: scrollview]; – futurevilla216

+0

@LennyK görünüşte bu şekilde düzenlenmişti –

12

, bu deneyin

{ 

     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

NANNAV'ın harika çalıştığına benzeyen son seçeneği kullandım ama şimdi bir kaydırma çubuğu görebiliyorum ama UI kilitli. Çalıştığı tek denetim anlamı UIScrollView ... herhangi bir fikir ... – logixologist

0

Basit Bir Yöntem: programlı UI oluştururken böyle, lazy çok kullanmak daha

- (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

gerekiyorsa birden çok kez oluşturabilirsiniz:

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

Bir UIScrollView Programlaical oluşturma

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]; 
İlgili konular