Ios 在推送序列上设置barTintColor动画
当从一个Ios 在推送序列上设置barTintColor动画,ios,iphone,objective-c,uinavigationbar,bartintcolor,Ios,Iphone,Objective C,Uinavigationbar,Bartintcolor,当从一个视图控制器转换到另一个时,我想设置bartincolor属性的动画 我尝试了以下解决方案: [[self transitionCoordinator] animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) { self.navigationController.navigationBar.translucent = NO; self.navi
视图控制器转换到另一个时,我想设置bartincolor
属性的动画
我尝试了以下解决方案:
[[self transitionCoordinator] animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
self.navigationController.navigationBar.translucent = NO;
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
} completion:nil];
但这会导致动画完成后导航栏的barTintColor
值略微跳变。这是意料之中的,因为半透明和不透明的颜色是不同的
类似问题:
提前谢谢
编辑:
CGFloat bR = ((bcR - cR) * alpha + cR);
CGFloat bG = ((bcG - cG) * alpha + cG);
CGFloat bB = ((bcB - cB) * alpha + cB);
cR, cG, cB = original color R,G,B components
bcR, bcG, bcB = blending color R,G,B components
alpha = alpha value to blend with
================================================
bR, bG, bB = blended R,G,B components
我忘了添加,如果我删除self.navigationController.navigationBar.translucent=NO,则导航栏的左上角会出现一些奇怪的缩放动画代码>动画块中的线条。所以这也不是解决方案。我将回答我自己的问题,同时仍然愿意接受其他建议/解决方案
我的解决方案,我认为是一个相当“干净的解决方案”,就是用合适的混合色从原始颜色制作一个alpha混合色。假设我们在导航栏后面有一个白色背景,我们希望将当前导航栏barTintColor
动画设置为绿色。在这种情况下,我们必须混合原始绿色、白色和适当的alpha值
在玩了一些值之后,我发现alpha0.16最适合iOS 7的情况(我还没有在其他OS版本上测试过)
用我的原始问题编写的动画块用我的解决方案实现,如下所示:
注意阿尔法混合原色和原色
值为:
CGFloat bR = ((bcR - cR) * alpha + cR);
CGFloat bG = ((bcG - cG) * alpha + cG);
CGFloat bB = ((bcB - cB) * alpha + cB);
cR, cG, cB = original color R,G,B components
bcR, bcG, bcB = blending color R,G,B components
alpha = alpha value to blend with
================================================
bR, bG, bB = blended R,G,B components
任何喜欢此解决方案的人都可以使用我为本例编写的用于alpha混合的UIColor
类别。你可以找到它
谢谢。我将回答我自己的问题,同时仍然欢迎其他建议/解决方案
我的解决方案,我认为是一个相当“干净的解决方案”,就是用合适的混合色从原始颜色制作一个alpha混合色。假设我们在导航栏后面有一个白色背景,我们希望将当前导航栏barTintColor
动画设置为绿色。在这种情况下,我们必须混合原始绿色、白色和适当的alpha值
在玩了一些值之后,我发现alpha0.16最适合iOS 7的情况(我还没有在其他OS版本上测试过)
用我的原始问题编写的动画块用我的解决方案实现,如下所示:
注意阿尔法混合原色和原色
值为:
CGFloat bR = ((bcR - cR) * alpha + cR);
CGFloat bG = ((bcG - cG) * alpha + cG);
CGFloat bB = ((bcB - cB) * alpha + cB);
cR, cG, cB = original color R,G,B components
bcR, bcG, bcB = blending color R,G,B components
alpha = alpha value to blend with
================================================
bR, bG, bB = blended R,G,B components
任何喜欢此解决方案的人都可以使用我为本例编写的用于alpha混合的UIColor
类别。你可以找到它
谢谢。我将回答我自己的问题,同时仍然欢迎其他建议/解决方案
我的解决方案,我认为是一个相当“干净的解决方案”,就是用合适的混合色从原始颜色制作一个alpha混合色。假设我们在导航栏后面有一个白色背景,我们希望将当前导航栏barTintColor
动画设置为绿色。在这种情况下,我们必须混合原始绿色、白色和适当的alpha值
在玩了一些值之后,我发现alpha0.16最适合iOS 7的情况(我还没有在其他OS版本上测试过)
用我的原始问题编写的动画块用我的解决方案实现,如下所示:
注意阿尔法混合原色和原色
值为:
CGFloat bR = ((bcR - cR) * alpha + cR);
CGFloat bG = ((bcG - cG) * alpha + cG);
CGFloat bB = ((bcB - cB) * alpha + cB);
cR, cG, cB = original color R,G,B components
bcR, bcG, bcB = blending color R,G,B components
alpha = alpha value to blend with
================================================
bR, bG, bB = blended R,G,B components
任何喜欢此解决方案的人都可以使用我为本例编写的用于alpha混合的UIColor
类别。你可以找到它
谢谢。我将回答我自己的问题,同时仍然欢迎其他建议/解决方案
我的解决方案,我认为是一个相当“干净的解决方案”,就是用合适的混合色从原始颜色制作一个alpha混合色。假设我们在导航栏后面有一个白色背景,我们希望将当前导航栏barTintColor
动画设置为绿色。在这种情况下,我们必须混合原始绿色、白色和适当的alpha值
在玩了一些值之后,我发现alpha0.16最适合iOS 7的情况(我还没有在其他OS版本上测试过)
用我的原始问题编写的动画块用我的解决方案实现,如下所示:
注意阿尔法混合原色和原色
值为:
CGFloat bR = ((bcR - cR) * alpha + cR);
CGFloat bG = ((bcG - cG) * alpha + cG);
CGFloat bB = ((bcB - cB) * alpha + cB);
cR, cG, cB = original color R,G,B components
bcR, bcG, bcB = blending color R,G,B components
alpha = alpha value to blend with
================================================
bR, bG, bB = blended R,G,B components
任何喜欢此解决方案的人都可以使用我为本例编写的用于alpha混合的UIColor
类别。你可以找到它
谢谢。这对我来说没什么区别。iOS9/10,根本没有动画,它只需一步改变颜色。你的解决方案是否仍然有效?或者你是否有一个在线应用程序,我可以检查它是否有效?这对我来说没有任何区别。iOS9/10,根本没有动画,它只需一步改变颜色。你的解决方案是否仍然有效?或者你是否有一个在线应用程序,我可以检查它是否有效?这对我来说没有任何区别。iOS9/10,根本没有动画,它只需一步改变颜色。你的解决方案是否仍然有效?或者你是否有一个在线应用程序,我可以检查它是否有效?这对我来说没有任何区别。iOS9/10,根本没有动画,只是