statu**ar「statu**ars2」
status bar是什么意思
status bar
n.状态栏;

以上结果来自金山词霸
例句:
1.
They typically place a persistent icon in the status bar, which users can open to get themessage.
一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
StatusBar的用处
StatusBar 控件由 Panel 对象组成,每一个 Panel 对象能包含文本和/或图片。控制个别面板的外观属性包括 Width、Alignment(文本和图片的)和 Bevel。此外,能使用 Style 属性七个值中的一个自动地显示公共数据,诸如日期、时间和键盘状态等。
在设计时,在 StatusBar 控件的属性页的“窗格”选项卡中设置的值能建立面板并定制它们的外观。在运行时,能重新配置 Panel 对象以反映不同的功能,这些功能取决于应用程序的状态。关于 Panel 对象的属性、事件和方法的详细信息,请参阅“Panel 对象和 Panels **”的主题。
StatusBar 控件代表性地显示有关在窗体上查看的对象、对象组件的信息或关系到对象操作的上下文的信息。StatusBar 控件与其它控件如 Toolbar 控件一起,提供建立界面的工具,该界面既经济又含有丰富的信息。
发行注意 StatusBar 控件是自定义控件组的一部分,该控件可在 MSCOMCTL.OCX 文件中找到。为了在应用程序中使用 StatusBar 控件,必须将 MSCOMCTL.OCX 文件添加到工程中。当发布应用程序时,请在用户的 Microsoft Windows SYSTEM 目录下安装 MSCOMCTL.OCX 文件。如何将自定义的控件添加到工程中的详细信息,请参阅《程序员指南》。
StatusBar 控件常数
StatusBar 样式常数
常数 值 描述
**rNormal 0 正常。StatusBar 被分成面板。
**rSimple 1 简化。StatusBar 只有一个大面板和简化文本。
面板对齐常数
常数 值 描述
**rLeft 0 文本靠左。
**rCenter 1 文本居中。
**rRight 2 文本靠右。
面板自动调整大小常数
常数 值 描述
**rNoAutoSize 0 非自动调整大小。
**rSpring 1 在面板中划分附加空间。
**rContents 2 符合于目录。
面板斜面常数
常数 值 描述
**rNoBevel 0 无斜面。
**rInset 1 斜面插入。
**rRaised 2 斜面凸起。
面板样式常数
常数 值 描述
**rText 0 显示文本和/或位图。
**rCaps 1 显示 Caps Lock 状态。
**rNum 2 显示 Number Lock 状态。
**rIns 3 显示 Insert 键状态。
**rScrl 4 显示 Scroll Lock 状态。
**rTime 5 以 System 格式显示时间。
**rDate 6 以 System 格式显示日期。
**rKana 7 Kana。当激活滚动锁定时,显示黑体字母 KANA,反之当停用滚动锁定时,则显示暗淡的字母 KANA。
如何改变statu**ar的背景颜色
你可以绘制statu**ar中的panel或者干脆自己绘制,我这里只是举一个简单的测试例子,其他的你要自己来加:
Imports System.ComponentModel
Public Class mystatu**ar
Inherits System.Windows.Forms.StatusBar
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
Me.SetStyle(ControlStyles.UserPaint, True)
End Sub
Private _backcolor As Color = SystemColors.Control '背景颜色
Description("背景颜色。") _
Public Property barbackcolor() As Color
Get
Return _backcolor
End Get
Set(ByVal Value As Color)
_backcolor = Value
Me.Invalidate()
End Set
End Property
Public Enum barborderstyleitem
style1 = 0‘应该是边框的类型,这里没有去做处理。
style2 = 1
style3 = 2
End Enum
Private m_barstyle As barborderstyleitem = barborderstyleitem.style1
Description("边框类型。") _
Public Property barborderstyle() As barborderstyleitem
Get
Return m_barstyle
End Get
Set(ByVal Value As barborderstyleitem)
m_barstyle = Value
Me.Invalidate()
End Set
End Property
Protected Overrides Sub OnPaint(ByVal pevent As System.Windows.Forms.PaintEventArgs)
'pevent.ClipRectangle指在其中绘制的矩形,即使用父控件的背景色来画这个矩形按钮
pevent.Graphics.FillRectangle(New SolidBrush(Me.Parent.BackColor), pevent.ClipRectangle)
If (Enabled = False) Then
'画不可用状态
DrawDisable(pevent.Graphics)’没有去处理。
Else '一般情况下
DrawNormal(pevent.Graphics)
End If
End Sub
Private Sub DrawBorder(ByVal g As Graphics)
If (m_barstyle = barborderstyleitem.style1) Then '绘制一般边框
'
Dim p As Pen = New Pen(SystemColors.ControlLightLight, 2)
g.DrawLine(p, 1, 1, 1, Height - 2) '绘制左侧竖线
g.DrawLine(p, 1, 1, Width - 2, 1) '绘制上面横线
g.DrawLine(p, Width - 1, 2, Width - 1, Height - 2) '绘制右侧竖线,由于已经在上面绘制了横线(纵坐标为1),所以从2开始
g.DrawLine(p, 2, Height - 1, Width - 2, Height - 1) '绘制下面横线
End If
End Sub
'一般状态
Private Sub DrawNormal(ByVal g As Graphics)
'绘制边框,宽度为1
DrawBorder(g)
'绘制背景
PaintBack(g)
paintpanel(g)
End Sub
'不可用状态
Private Sub DrawDisable(ByVal g As Graphics)
''绘制边框,宽度为1
'DrawBorder(g)
''绘制背景,用高光点颜色
'PaintBack(g, SystemColors.ControlLightLight)
End Sub
Private Sub paintpanel(ByVal g As Graphics)
Dim p As StatusBarPanel
Dim pen As New Pen(Color.Black)
For Each p In Me.Panels‘注意,这里没有考虑多个panel的情况,你要每次累加横坐标才可以。
g.DrawLine(pen, 2, 2, 2, Height - 4) '绘制左侧竖线
g.DrawLine(pen, 1, 1, p.Width - 2, 1) '绘制上面横线
g.DrawLine(pen, p.Width - 1, 2, p.Width - 1, Height - 2)
g.DrawLine(pen, 4, Height - 1, p.Width - 4, Height - 4)
Next
End Sub
'绘制背景色
Private Sub PaintBack(ByVal g As Graphics)
g.FillRectangle(New SolidBrush(Me._backcolor), 3, 3, Width - 6, Height - 6)
End Sub
End Class
CAD中statu**ar命令输入3的时候提示仅需要0或1是什么原因?
试了一下,2017cad也是这样的,statu**ar的值只能是0或1,不可以设置为3的。状态栏图标变文字,网上搜索了一下,回答确实是设置值为3但是人家用的是2016的,到了2017就不好使了,可能往后的就不让这么设置了吧。虽然状态栏显示的是图标但是光标放在上面就会显示文字了啊,不也一样看么。
如何控制Status Bar的隐藏和显示
1.在info.plist设置中,View
controller-based
status
bar
appearance的值要设置成YES,经测试当是NO的时候,接下来要做的事不会被执行。(也可能是其他设置的问题,本座还不清楚)
2.在ViewController.m中添加(ViewController.m是创建项目时自动生成的rootViewController)
//控制状态栏显隐
-
(UIViewController*)childViewControllerForStatusBarHidden{
return
yourChildViewContoller1;
}
//控制状态栏样式
-
(UIViewController*)childViewControllerForStatusBarStyle{
return
yourChildViewContoller2;
}
由child
controller
来控制状态栏的显隐和样式。
如果希望状态栏的样式是UIStatusBarStyleLightContent且在全局设置中已经设置好了,由于第1步的设置会导致全局设置无效,所以还要加上对样式的控制。
3.在yourChildViewContoller1.m中添加
//是否隐藏状态栏
-
(BOOL)prefersStatusBarHidden{
if
(//什么鬼情况下)
{
return
YES;//隐藏
}
return
NO;//显示
}
在yourChildViewContoller2.m中添加
-
(UIStatusBarStyle)preferredStatusBarStyle{
return
UIStatusBarStyleLightContent;
}
yourChildViewContoller1和yourChildViewContoller2可以是同一个,也可以是不同的
4.关键的来了
在第3步中添加的方**在app载入后立即执行,在后面的操作过程中是不会被执行的
当希望状态栏改变状态的时候,需要执行这个方法[self
setNeedsStatusBarAppearanceUpdate];(本座搜索到的其他网友的文章中都是这样说的,但是还没有交代清楚)
如果在yourChildViewContoller1、yourChildViewContoller2中执行这个方法,是无效的
本座猜测,状态栏只能由ViewController来控制,第2步中的设置相当于加了个代理,由代理来决定结果,但是要代理来执行还得由ViewController来发出命令,所以setNeedsStatusBarAppearanceUpdate方法得是ViewController来调用。
改成[[[[UIApplication
sharedApplication]
keyWindow]
rootViewController]
setNeedsStatusBarAppearanceUpdate];在代理的child
controller中执行就OK了。