【问题标题】:iOS JASidePanel status bar customizationiOS JASidePanel 状态栏自定义
【发布时间】:2013-10-29 11:08:03
【问题描述】:

我在我的应用程序中使用JASidePanels,到目前为止一切都很好。我的设计团队提出了这样的 UI 设计,当显示或显示侧面板时,

但我能够像这样复制!这个。

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

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

我尝试设置 sidePanel.view.backgroundColor 和 tintColor - 不走运。

感谢任何帮助!

【问题讨论】:

    标签: ios ios7 uistatusbar jasidepanels


    【解决方案1】:

    这是 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

    【讨论】:

      【解决方案2】:

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

      如果这不是你想要的,请忽略这个答案并删除它。


      它通过修改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/

      顺便说一句:我很好奇你的截图中没有cornerRadius

      【讨论】:

      • 我将圆角设置为 0,因为圆角半径对我来说并不是真正的平面 UI。为此,请在 JASlidePanelController 中查找:- (void)stylePanel:(UIView *)panel { panel.layer.cornerRadius = 0.0f;//此处 panel.clipsToBounds = YES; }
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-15
        • 1970-01-01
        • 1970-01-01
        • 2019-05-11
        相关资源
        最近更新 更多