iOS JASidePanel状态栏自定义

时间:2013-10-29 11:08:04

标签: ios ios7 uistatusbar jasidepanels

我在我的应用中使用JASidePanels,一切都很好。当侧面板显示或显示时,我的设计团队已经提出了这样的UI设计,

enter image description here

但我能够重现!此

enter image description here

到目前为止我所做的一切:

我尝试将中心面板背景颜色设置为右侧面板中的图像 - 没有运气。

我尝试设置sidePanel.view.backgroundColor和tintColor - 没有运气。

感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

这是JASidePanels的错误,但他们通过这样做解决了这个问题: 在JASidePanelsController中将以下代码添加到_adjustCenterFrame

- (CGRect)_adjustCenterFrame {
    CGRect frame = self.view.bounds;

    if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
    {
        if (![UIApplication sharedApplication].statusBarHidden) {
                        frame.origin.y = frame.origin.y + [UIApplication sharedApplication].statusBarFrame.size.height;
                        frame.size.height = frame.size.height - 20;
                    }

        } 
...
}

同样在_layoutSideContainers添加:

- (void)_layoutSideContainers:(BOOL)animate duration:(NSTimeInterval)duration {
    CGRect leftFrame = self.view.bounds;
    CGRect rightFrame = self.view.bounds;



    if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
    {
        if (![UIApplication sharedApplication].statusBarHidden) {
                    leftFrame.origin.y = leftFrame.origin.y + [UIApplication sharedApplication].statusBarFrame.size.height;
                    rightFrame.origin.y = rightFrame.origin.y + [UIApplication sharedApplication].statusBarFrame.size.height;
            leftFrame.size.height = leftFrame.size.height - 20;
            rightFrame.size.height = rightFrame.size.height - 20;
                        }
            }

    ...
}

参考:

https://github.com/hamin/JASidePanels/commit/81ae7514d275d9242ad268ab818441c8d786a63e

https://github.com/gotosleep/JASidePanels/pull/164

答案 1 :(得分:1)

我尝试了一个基于JASidePanels演示源代码的简单测试。并得到了这个效果:

screenshot

如果这不是您想要的,请忽略此答案并将其删除。


它的工作原理是修改JASidePanels的源代码:

为了测试,我补充说 self.window.backgroundColor = [UIColor redColor]

在您的情况下,您可以添加[self.window addSubview:backgroundImageView]jaSidePanelController.view addSubview:backgroundImageView(请自行测试)

然后通过添加额外空间来调整左侧面板框架的大小,让左侧面板不会覆盖状态栏的背景图像视图。在JASidePanelController#_layoutSidePanels

PS:有关详情,请阅读有关iOS 7状态栏的文章,例如http://www.doubleencore.com/2013/09/developers-guide-to-the-ios-7-status-bar/

BTW:我很好奇屏幕截图中没有cornerRadius

答案 2 :(得分:0)

只需在JASlidePanelController.m文件中设置cornerRadius 0.0f:

- (void)stylePanel:(UIView *)panel {
      //do changes in below cornerRadius
      panel.layer.cornerRadius = 0.0f;
      panel.clipsToBounds = YES;   }