2016-09-22 5 views
0

Я пытаюсь добавить UITableView внутри UIScrollView но когда я установил высоту UITableView с помощью tableView.contentSize.height он не устанавливает высоту должным образом (это добавить дополнительную высоту, Что фактическая высота)UITableView высота внутри UIScrollView в Swift

Может ли кто-нибудь помочь?

This is what I want to achieve

+0

Почему вы добавляете tableview на scrollview? UITableView также является подклассом UIScrollView. – Sahil

+0

нехорошо думать работать с bro, tableview является подклассом scrollview –

+0

использовать любой, который подходит для просмотра –

ответ

0

Я могу сделать размер содержания таблицы, чтобы установить в качестве таблицы высоты и изменить размер содержимого Scrollview следуя путем.

Я просто разработал таблицу внутри Scrollview и вызвать, чтобы изменить высоту стола и содержание размера Scrollview от viewDidAppear

Мой код:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    self.extraDesignAfterStoryboard(); 
} 

override func viewDidAppear(animated: Bool) { 

    self.modifyContentHeight(); 
} 

func extraDesignAfterStoryboard() 
{ 
    scrolVw = UIScrollView(); 
    scrolVw.frame = CGRectMake(0, 64, self.view.frame.size.width, 200); 
    scrolVw.backgroundColor = UIColor.greenColor(); 
    self.view.addSubview(scrolVw); 

    tblViewScr = UITableView(frame: CGRectMake(0, 80, scrolVw.frame.size.width, 120), style: UITableViewStyle.Plain); 
    tblViewScr.delegate = self; 
    tblViewScr.tag = 100; 
    tblViewScr.dataSource = self; 
    tblViewScr.scrollEnabled = false; 
    tblViewScr.backgroundColor = UIColor.redColor(); 
    scrolVw.addSubview(tblViewScr); 
} 

func modifyContentHeight() 
{ 
    if(self.tblViewScr.contentSize.height > self.tblViewScr.frame.height){ 
     var frame: CGRect = self.tblViewScr.frame; 
     frame.size.height = self.tblViewScr.contentSize.height; 
     self.tblViewScr.frame = frame; 

     var contentSize = self.scrolVw.contentSize; 
     contentSize.height = CGRectGetMaxY(self.tblViewScr.frame); 
     self.scrolVw.contentSize = contentSize; 
    } 
} 

Он работает здесь в моем демо проект. Можете ли вы проверить один раз, если он работает для вас.

+1

Это не работает Scrollview не прокручивать –

+0

Где ты получить источник данных? Смотрите, что я создал в viewDidLoad и вызываю, чтобы изменить фрейм в viewDidAppear. На самом деле вам нужно вызвать метод после загрузки вашей таблицы. Вы поняли? Вы делаете то же самое? – Janmenjaya

+0

Вы задаете размер содержимого scrollView, как показано в коде. var contentSize = self.scrolVw.contentSize; contentSize.height = CGRectGetMaxY (self.tblViewScr.frame); self.scrolVw.contentSize = contentSize; – Janmenjaya

Смежные вопросы