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

Posted

技术标签:

【中文标题】uiprogressview 没有出现在 iOS 7 中的 uitableview 下面【英文标题】:uiprogressview doesn't appear below uitableview in iOS 7 【发布时间】:2014-03-01 02:07:38 【问题描述】:

我正在编写一个使用 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。

有人能建议我为什么看不到 UIProgressView 吗?

谢谢,

杰森·马佐塔

【问题讨论】:

【参考方案1】:

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

【讨论】:

嗨,开发者。谢谢回复。我试过了,我没有看到任何变化。 你在哪里设置属性? 我设法用 UIViewController 替换了 UITableViewController。通过一些更改,我现在可以看到 UIProgressView 更新以及表格的内容。感谢您的所有帮助。

以上是关于uiprogressview 没有出现在 iOS 7 中的 uitableview 下面的主要内容,如果未能解决你的问题,请参考以下文章

UIProgressView 跟踪和进度图像在 iOS7 中不起作用

UIProgressView 用 UIImage 自定义进度条

IOS 将 UIProgressView 添加到 AVFoundation AVCaptureMovieFileOutput

UIProgressView 高度

iOS 7.1 中以编程方式创建的 UIProgressView 的高度被忽略(始终为 2)

带有渐变的 iOS UIProgressView