相关疑难解决方法(0)

我们如何以编程方式检测运行设备的iOS版本?

我想检查用户是否在低于5.0的iOS上运行应用程序并在应用程序中显示标签.

如何以编程方式检测用户设备上运行的iOS?

谢谢!

iphone cocoa-touch objective-c ios4 ios

288
推荐指数
7
解决办法
21万
查看次数

为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万
查看次数

以点值检测iPhone 6/6 +屏幕尺寸

鉴于最新发布的iPhone 6 屏幕尺寸:

iPhone 6: 1334h * 750w @2x (in points: 667h * 375w)
iPhone 6+: 1920 * 1080 @3x (in points: 640h * 360w)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有代码允许我检测用户设备的屏幕尺寸,以便我可以UIImages使用用户的设备相应地调整和调整尺寸和其他材料.

到目前为止,我一直在使用以下内容:

- (NSString *) platform{
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithUTF8String:machine];
    free(machine);
    return platform;
}

- (NSString *) platformString{
    NSString *platform = [self platform];
    if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";
    if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G"; …
Run Code Online (Sandbox Code Playgroud)

iphone ios ios8

59
推荐指数
5
解决办法
9万
查看次数

IOS 6强制设备朝向景观

我给了一个应用程序说10个视图控制器.我使用导航控制器来加载/卸载它们.

除一个以外的所有人都处于纵向模式 假设第7个VC处于景观状态.我需要它在加载时以横向呈现.

请建议在IOS 6中强制定位从纵向到横向的方法(在IOS 5中工作也很好).

以下是我 IOS 6 之前做的事情:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    UIViewController *c = [[[UIViewController alloc]init] autorelease];
    [self presentModalViewController:c animated:NO];
    [self dismissModalViewControllerAnimated:NO];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
Run Code Online (Sandbox Code Playgroud)

呈现和解雇模态VC迫使应用程序检查其方向,因此shouldAutorotateToInterfaceOrientation被调用.

我在IOS 6中尝试过的内容:

- (BOOL)shouldAutorotate{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return UIInterfaceOrientationLandscapeLeft;
}
Run Code Online (Sandbox Code Playgroud)

在加载时,控制器保持纵向.旋转设备后,方向改变就好了.但是我需要让控制器在加载时自动旋转到横向,因此用户必须旋转设备才能正确查看数据.

另一个问题:该装置旋转回纵向后,方向变为纵向,虽然我在指定supportedInterfaceOrientations唯一的UIInterfaceOrientationMaskLandscape.为什么会这样?

此外,上述3种方法越来越被调用.

一些(有用的)数据:

  1. 在我的plist文件中,我指定了3个方向 - 所有方向都是颠倒的.
  2. 该项目是在Xcode 4.3 IOS 5中启动的.包括xib在内的所有类都是在Xcode 4.5 IOS 6之前创建的,现在我使用的是最后一个版本.
  3. 在plist文件中,状态栏设置为可见.
  4. 在xib文件中(我希望在横向中),状态栏为"无",方向设置为横向.

任何帮助表示赞赏.谢谢.

iphone objective-c orientation ios6

57
推荐指数
4
解决办法
7万
查看次数

检查iOS上的位置服务权限

如何检查我的应用是否启用了位置服务?

我有2个故事板,我想检查位置服务.如果为我的应用启用了位置服务,我想启动带位置的地图故事板.否则,我想发布另一个故事板.我该如何以编程方式完成?

objective-c cllocationmanager ios

49
推荐指数
7
解决办法
7万
查看次数

在运行时检查iOS版本?

这是我上一期的问题.我正在使用beginAnimations:context:设置动画块来动画一些UITextLabels.但是我在文档中注意到:"在iOS 4.0及更高版本中不鼓励使用此方法.您应该使用基于块的动画方法."

我的问题是我很想使用animateWithDuration:动画:(在iOS 4.0及更高版本中可用)但不想排除使用iOS 3.0的人.有没有办法在运行时检查设备的iOS版本,以便我可以决定使用哪个语句?

iphone cocoa-touch objective-c

45
推荐指数
7
解决办法
4万
查看次数

检查iOS 7或更早版本的最佳方法?

我需要根据我运行的iOS版本重新配置一些UI,所以我需要一个检查iOS版本的好方法.暂时我这样做:

if ([[[UIDevice currentDevice] systemVersion] isEqualToString: @"7.0"]) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

我不想硬编码这些字符串比较并根据它做出决定.有没有更好的方法来做到这一点?

ios ios6 ios7

41
推荐指数
2
解决办法
4万
查看次数

如何定位特定的iPhone版本?

我有一些代码我想只在最新的iPhone SDK(3.0)上执行,但我似乎无法找到一种方法来定位3.0并忽略2.2.1等.有一个ifdef语句,但它似乎覆盖了整个iPhone:

#if TARGET_OS_IPHONE
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

iphone

36
推荐指数
3
解决办法
4万
查看次数

UIAlertController如果是iOS 8,否则是UIAlertView

我想要符合iOS 8中使用的UIAlertController,因为现在不推荐使用UIAlertView.有没有办法在不破坏对iOS 7的支持的情况下使用它?是否有某种if条件我可以检查iOS 8,否则为iOS 7支持做其他事情?

uialertview ios ios8 uialertcontroller

27
推荐指数
3
解决办法
2万
查看次数

如何检查iOS版本是否为iOS 6?

可能重复:
检查iPhone iOS版本

我想在iOS中查看iOS版本.

因为我有一些仅适用于iOS 6的代码.

那我该怎么办?

objective-c ios ios6

25
推荐指数
3
解决办法
5万
查看次数