Closed DevWhan closed 4 years ago
这个组件不需要什么初始值的概念,在滚动被触发之前 navigationBar 是怎样就是怎样,所以你自行在你想要的时机去设置你的 navigationBar 样式即可,例如 viewWillAppear:。至于设置的方式,用系统的 API,或者用 QMUINavigationControllerAppearanceDelegate 提供的接口,都可以。
- (UIImage *)navigationBarBackgroundImage {
if(导航栏渐变模式){
if(self.scrollAnimator){
return self.scrollAnimator.backgroundImageBlock(self.scrollAnimator, self.scrollAnimator.progress);
}
return 透明图片
}
return 导航栏默认图片
}
这样确实可以由业务方解决, 只是需要一个时机去选择由scrollAnimator接手. 不过从组件自身角度来说确实, 初始这个概念有点偏. 感谢, 已解决.
在组件层面是没有能力解决你说的这种场景的。UINavigationBar 的设置时机有限制(一般是 viewWillAppear:),但你的 scrollAnimator 的初始化时机是不确定的,它关联的 view 的初始化时机也是不确定的,所以如果要提供初始值的能力,就必须要求业务要保证 scrollAnimator/view 在指定的时机之前已经被初始化并设置好,这会带来更多问题,组件就不灵活了。
是的 在有两个需要被赋值的初始属性下 又去出api控制一种依赖一个初始属性的值 确实这种设计会带来很多问题 而且也不是合理的 我之前想偏了 光关注业务怎么实现好了 感谢
QMUINavigationBarScrollingAnimator的滑动效果计算依赖UIScrollView可以保证其一定是对的 但是在一些跨平台框架下UIScrollView的获取需要等到相应的渲染结束(并不是viewDidLoad) 所以会出现先正常显示导航栏, 过一会在隐藏导航栏(需求为offY为0时 是个通栏效果) 这个时间是依赖跨平台框架渲染时长, 不可控. 而且在大部分情况下, 一个通栏页面 第一屏是个通栏(不显示导航栏) 所以希望能提供一个api, 可以手动控制初始状态, 感谢.