UINavigationController + 状态栏框架的CGRect
CGRect for frame of UINavigationController + Status Bar
我正在努力在 NavigationBar 后面添加渐变。我将 UINavigationController 子类化来这样做。渐变应填充状态栏和 UINavigationBar。问题是我只能让它填充 UINavigationBar(通过 self.toolBar.bounds)。 我尝试添加状态栏的高度,但它不允许 +
@IBOutlet weak var toolBar: UINavigationBar!
let gradient:CAGradientLayer = CAGradientLayer()
gradient.frame = self.toolBar.bounds
gradient.colors = [UIColor.greenColor().CGColor, UIColor.blueColor().CGColor]
self.toolBar.layer.insertSublayer(gradient, atIndex: 1)
toolBar.barTintColor = UIColor.grayColor()
这是上面代码生成的屏幕截图:
渐变应该延伸到状态栏,所以不会有 grayColor。
你也可以为渐变提供图像:
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"gradiant_bg"]]];
如果状态栏存在,您正在将渐变设置为 UINavigationBar. Navigation bar's size is
44and it's y position is
20`。因此,如果您将渐变设置为导航栏,那么肯定只会设置它。它绝对不会影响状态栏,因为它是不同的东西。
在您的情况下,我认为您应该使用 UIView
.
制作自定义导航栏
只需隐藏特定此视图控制器的默认导航栏,并将大小为 64
的 uiview 拖动到 (0,0)
,这样它就会同时覆盖状态栏和导航栏 space。
然后为该视图设置渐变,您将获得想要的效果。
希望这会有所帮助:)
我正在努力在 NavigationBar 后面添加渐变。我将 UINavigationController 子类化来这样做。渐变应填充状态栏和 UINavigationBar。问题是我只能让它填充 UINavigationBar(通过 self.toolBar.bounds)。 我尝试添加状态栏的高度,但它不允许 +
@IBOutlet weak var toolBar: UINavigationBar!
let gradient:CAGradientLayer = CAGradientLayer()
gradient.frame = self.toolBar.bounds
gradient.colors = [UIColor.greenColor().CGColor, UIColor.blueColor().CGColor]
self.toolBar.layer.insertSublayer(gradient, atIndex: 1)
toolBar.barTintColor = UIColor.grayColor()
这是上面代码生成的屏幕截图:
渐变应该延伸到状态栏,所以不会有 grayColor。
你也可以为渐变提供图像:
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"gradiant_bg"]]];
如果状态栏存在,您正在将渐变设置为 UINavigationBar. Navigation bar's size is
44and it's y position is
20`。因此,如果您将渐变设置为导航栏,那么肯定只会设置它。它绝对不会影响状态栏,因为它是不同的东西。
在您的情况下,我认为您应该使用 UIView
.
只需隐藏特定此视图控制器的默认导航栏,并将大小为 64
的 uiview 拖动到 (0,0)
,这样它就会同时覆盖状态栏和导航栏 space。
然后为该视图设置渐变,您将获得想要的效果。
希望这会有所帮助:)