在VC 中工具栏的隐藏与显示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在VC 中工具栏的隐藏与显示相关的知识,希望对你有一定的参考价值。
首先看代码
void CMainFrame::OnViewNewbar()
// TODO: Add your command handler code here
if(m_newToolBar.IsWindowVisible())
m_newToolBar.ShowWindow(SW_HIDE);
else
m_newToolBar.ShowWindow(SW_SHOW);
DockControlBar(&m_newToolBar);
RecalcLayout();
问题一:我在菜单栏上设置了一个菜单,来实现工具栏的显示与隐藏,
DockControlBar(&m_newToolBar);
RecalcLayout();
请问这两句话的作用?
问题二:当工具栏悬浮时,我按下菜单,工具栏隐藏,当我再按下菜单,工具栏却显示再框架窗口的顶部,怎样改变程序使工具栏显示时悬浮在原来位置?
1、现在vc版本已经很多,这里以vc6示例。
2、启动vc6,在菜单栏里的“工具”上单击,在弹出的下拉菜单里单击“定制”。
3、在弹出的窗口里的工具栏下,勾选择,或取消勾选项目,就能达到工具栏的隐藏与显示了。
参考技术A RecalcLayout是CFrameWnd定义的虚拟函数,边框窗口在必要的时候调用虚拟函数RecalcLayout来重新放置它的控制条和客户窗口,例如在创建窗口时、响应消息WM_SIZE时
CFrameWnd::RecalcLayout调用CWnd的成员函数RepositionBars完成控制条窗口的重新放置
插页式广告立即隐藏并展开转场
【中文标题】插页式广告立即隐藏并展开转场【英文标题】:Interstitial Ads hide immediately with unwind segue 【发布时间】:2019-09-15 16:21:23 【问题描述】:我正在尝试将插页式广告添加到我的应用中。我有 6 个连续的视图控制器。我在 VC #5 上有 3 个按钮。其中两个是 VC#1 和 VC#3 的展开序列。第三个按钮通向 VC#6。我希望每个按钮触发添加。我没有问题将广告添加到第三个按钮与前进segue。但我正在努力解开 segue 按钮。广告仅显示第二次,然后继续展开。
var interstitial: GADInterstitial!
override func viewDidLoad()
super.viewDidLoad()
interstitial = createAndLoadInterstitial()
func createAndLoadInterstitial() -> GADInterstitial
let interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
interstitial.delegate = self
interstitial.load(GADRequest())
return interstitial
func interstitialDidDismissScreen(_ ad: GADInterstitial)
interstitial = createAndLoadInterstitial()
我尝试对一个按钮使用带有标识符的 unwind segue,而对第二个按钮使用带有按钮的直接 segue。
@IBAction func againButtonPressed(_ sender: UIButton)
if interstitial.isReady
interstitial.present(fromRootViewController: self)
else
print("Ad wasn't ready")
performSegue(withIdentifier: "backToInstruction", sender: self)
@IBAction func endButtonPressed(_ sender: UIButton)
if interstitial.isReady
interstitial.present(fromRootViewController: self)
else
print("Ad wasn't ready")
我尝试在 interstitialDidDismissScreen 函数中使用 performSegue。它有点工作,它在 add 被解雇后触发 segue,但在 As 的十字架被按下后需要 10 秒才能进入 VC,这不是最好的体验。 所以,我不知道还能尝试什么......
【问题讨论】:
【参考方案1】:您不应在显示 Add 后立即触发 performSegue。相反,您需要将其推迟到 Add 被解除。为此,您需要将 Segue 代码移动到 interstitialDidDismissScreen 回调。像这样,
func interstitialDidDismissScreen(_ ad: GADInterstitial)
if isAgainButtonPressed
performSegue(withIdentifier: "backToInstruction", sender: self)
return
interstitial = createAndLoadInterstitial()
然后你在 againButtonPresed 方法中将 isAgainButtonPressed 设置为 true。
【讨论】:
这是一个选项,但我只是不明白:如果使用“forward segue”,它会在用户关闭它之前显示广告-> 在广告被关闭后触发 segue,我不需要使用调度队列。但是 unwind segue 会立即触发。必须有一个选项可以让 unwind segue 表现得像 forward 一样。 在 unwind segue 的情况下,被解除的 viewController 被释放。前向转场并非如此。推送其他 viewController 的 viewController 仍然存在。 @VadimKat 我用更好的逻辑更新了答案。看看吧。以上是关于在VC 中工具栏的隐藏与显示的主要内容,如果未能解决你的问题,请参考以下文章