uiprogressview没有出现在iOS 7中的uitableview下面

时间:2014-03-01 02:07:39

标签: ios uitableview uiprogressview

我正在编写一个使用UIProgressView的程序,该程序在程序执行期间以编程方式添加并隐藏/显示。我有以下代码在iOS 5中工作。代码通过添加UIProgressView作为UITableView超级视图的子视图,将UIProgressView“添加到UITableView下面”。当UITableView滚动时,这也将UIProgressView保持在一个位置。

在viewDidLoad中,我设置了UIProgressView的框架

UIProgressView * progressBar = [[[UIProgressView alloc]    
initWithProgressViewStyle:UIProgressViewStyleBar] retain];
progressBar.hidden = NO;
progressBar.progress = [[NSUserDefaults standardUserDefaults] floatForKey:@"progress"];

//Set up the UIProgressView
frameForProgressBar = CGRectMake(0.0f,
                                 self.tableView.frame.origin.y +      
                                 self.tableView.frame.size.height -  
                                 progressBar.frame.size.height,
                                 self.tableView.frame.size.width,
                                 progressBar.frame.size.height);

progressBar.frame = frameForProgressBar;
insetsForTableView = UIEdgeInsetsMake(0.0, progressBar.frame.size.height, 0.0, 0.0);

然后当我想要UIProgressView出现时

// Add the Progress bar to the Window
progressBarState = ADD_PROGRESS_BAR;
[self.view.superview addSubview:progressBar];

所以我可以看到UIProgressView,我改变了UITableView的contentInsets。为了适应iOS 7,我读到对contentInsets的更改必须在viewWillLayoutSubviews中发生。

-(void) viewWillLayoutSubviews
{
    switch (progressBarState)
    {
        case ADD_PROGRESS_BAR:
            // Set the frame of the UITableView to allow the UIProgressView to appear
            self.tableView.contentInset = insetsForTableView;
            break;
        case REMOVE_PROGRESS_BAR:
            self.tableView.contentInset = UIEdgeInsetsZero;
            break;
        default:
            break;
    }
    progressBarState = UNDEFINED_PROGRESS_BAR;
}

我通过调试器运行此代码,并调用viewWillLayoutSubviews。但是,我没有看到UITableView调整大小,我没有看到UIProgressView。我尝试为UITableView设置一个框架,使其比屏幕小得多,然后为UIProgressView设置一个框架,将其置于“空”空间。但是,我仍然无法看到UIProgressView。

有人可以建议我为什么看不到UIP​​rogressView吗?

谢谢,

Jason Mazzotta

1 个答案:

答案 0 :(得分:0)

将UIViewController的automaticAdjustsScrollViewInsets属性设置为NO。 由于此属性适用于iOS 7及更高版本,因此请使用respondToSelector方法检查可用性。