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