小编Spa*_*yro的帖子

为iOS 7半透明UINavigationBar实现明亮鲜艳的色彩


iOS 7.1更新:在此更新中,似乎忽略了修改UINavigationBar中Alpha通道的变通方法.现在,最好的解决方案似乎只是"处理它",并希望你选择的任何颜色都可以呈现半透明效果.我仍然在寻找解决这个问题的方法.


iOS 7.0.3更新:使用iOS 7.0.3时,我们创建GitHub库已经更新,可以解决此问题.不幸的是,没有神奇的公式可以支持iOS 7.0.2及更早版本和iOS 7.0.3中创建的颜色.似乎Apple改善了饱和度,但是以不透明度为代价(因为模糊的半透明度取决于不透明度水平).我和其他一些人正在努力为此创建更好的解决方案.


我相信很多人已经遇到过这样的问题:iOS 7倾向于使半透明的UINavigationBar的颜色饱和.

我的目标是使用这种色调实现UINavigationBar,但是半透明:

UINavigationBar,Opaque

然而,有了半透明,我得到了这个.背景视图是白色的,据我所知会使这个视图更轻一些:

UINavigationBar,半透明

有没有办法在保持半透明的同时达到原色?我注意到Facebook已经能够让他们的酒吧变成他们丰富的蓝色,如下所示:

Facebook UINavigationBar,半透明

..所以我知道必须有某种方式.背景视图在这里显然有所不同,但其大部分内容也是灰色/白色.似乎无论你放入什么样的色调,你都无法在半透明的情况下获得鲜艳的色彩.

更新了解决方案.

这是我最终提出的解决方案.我采用了aprato的解决方案,然后UINavigationBarUINavigationController子类中包含了自定义.我创建了一个具有下面列出的实现的存储库,以及一个示例应用程序.

////////////////////////////
// CRNavigationBar.m
////////////////////////////

#import "CRNavigationBar.h"

@interface CRNavigationBar ()
@property (nonatomic, strong) CALayer *colorLayer;
@end

@implementation CRNavigationBar

static CGFloat const kDefaultColorLayerOpacity = 0.5f;
static CGFloat const kSpaceToCoverStatusBars = 20.0f;

- (void)setBarTintColor:(UIColor *)barTintColor {
    [super setBarTintColor:barTintColor];
    if (self.colorLayer == nil) {
        self.colorLayer = [CALayer layer];
        self.colorLayer.opacity = kDefaultColorLayerOpacity;
        [self.layer addSublayer:self.colorLayer];
    }
    self.colorLayer.backgroundColor …
Run Code Online (Sandbox Code Playgroud)

objective-c uinavigationbar uikit ios ios7

172
推荐指数
4
解决办法
5万
查看次数

在启用了资源库的Xcode 5中修改Info.plist的CFBundleVersion

使用Xcode 5的新资产库,添加图像和组织它们从未如此简单.但是,似乎它已经破坏了我用于创建构建的一些脚本.

我的Run Script Phase中有一个脚本,它设置CFBundleVersion为plist中的当前时间戳.在脚本中,我执行此语句:

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $timestamp" $BUILT_PRODUCTS_DIR/$INFOPLIST_PATH
Run Code Online (Sandbox Code Playgroud)

但是,执行此操作时,将显示以下语句:

Set: Entry, ":CFBundleVersion", Does Not Exist
File Doesn't Exist, Will Create: /Users/SpacePyro/Library/DerivedData/BundleTest-duikdqngfmrovnagrcsvdcuxxstz/Build/Products/Debug-iphoneos/BundleTest.app/Info.plist
Run Code Online (Sandbox Code Playgroud)

这似乎发生在干净的构建上.直到构建中途,plist似乎才会生成,可能是由于资产库.

我也使用了这个命令,虽然它没有抛出错误,但它仍然吹走了我的更改(假设INFO_PLIST="${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Info"):

defaults write $INFO_PLIST CFBundleVersion $timestamp
Run Code Online (Sandbox Code Playgroud)

当我开始使用资源库来组织我的应用程序图标和启动图像时,情况并非如此.谁知道为什么会这样?更好的是,是否有一种解决方法可以将此值添加到plist中?我已经尝试将脚本置于行动前构建阶段以及动作后构建阶段.我还尝试在构建完成后运行命令,但是当我尝试对其进行协同编码和打包时,它表示签名因修改plist而无效.

如果不存在合理的解决方案,我想我总是可以从资产库中迁移,直到我可以让我的脚本工作.

xcode plist ios xcode5

14
推荐指数
3
解决办法
9004
查看次数

如何在Objective-C中将NSString转换为NSMutableString?

有没有办法在Objective-C中将NSString转换为NSMutableString?

iphone xcode objective-c ios

12
推荐指数
1
解决办法
8636
查看次数

访问实例变量的语法?(目标C)

在Objective-C中访问实例变量的正确语法是什么?

假设我们有这个变量:

@interface thisInterface : UIViewController {
    NSMutableString *aString;
}

@property (nonatomic, retain) NSMutableString *aString;
Run Code Online (Sandbox Code Playgroud)

它是合成的.

当我们想要访问它时,我们首先要分配并初始化它.我已经在Objective-C中编程了大约一个月,我看到了两种不同形式的语法.我见过人们做的很简单aString = [[NSMutableString alloc] initWithString:@"hi"],他们在那里分配字符串; 我也看到人们开始它self.aString然后他们继续初始化他们的伊娃.我想我只想弄清楚什么是初始化实例变量的最合适的方法,因为在前面的例子中,我收到了来自它的EXC_BAD_ACCESS错误.在预先设置之后self.,它没有出现.

如果这是一个重复的问题,请原谅我,但在阅读了SO上的一些帖子之后,这让我很好奇.我正在尝试用Objective-C学习正确的语法,因为我更喜欢正确而不是草率.

iphone objective-c ios ivar

6
推荐指数
3
解决办法
8096
查看次数

应用程序背景时,使用MKMapView抛出gpus_ReturnNotPermittedKillClient错误

在线进行一些调查,我注意到gpus_ReturnNotPermittedKillClient当应用程序背景化时触发OpenGL操作时会抛出.我目前正在开发一个涉及地图视图和叠加层的项目(使用Apple的Breadcrumb示例代码).这些操作是在主线程上执行的,但是当地图视图初始化或视图被推到屏幕上时,应用程序可能会变为背景.

我还使用位置服务通过GPS检索点,但除非我们在前台,否则我不会更新叠加层.

据我所知,自iOS 6以来,MKMapView现在是用OpenGL创建的吗?如果是这种情况,那么可以通过OpenGL绘制叠加层吗?这可以帮助解释为什么我一直在随机获得此错误.

我听说过的一些方法来取消所有的OpenGL操作,如调用glFinish()applicationDidEnterBackgroundapplicationWillResignActive或使用[[CCDirector sharedDirector] pause].考虑到这一点,使用MKMapView/MKOverlayView消除任何OpenGL绘图的最佳解决方案是什么?

opengl-es mkmapview ios ios6

5
推荐指数
1
解决办法
6385
查看次数

标签 统计

ios ×5

objective-c ×3

iphone ×2

xcode ×2

ios6 ×1

ios7 ×1

ivar ×1

mkmapview ×1

opengl-es ×1

plist ×1

uikit ×1

uinavigationbar ×1

xcode5 ×1