小编leh*_*058的帖子

如何以编程方式获取iOS状态栏高度

我知道目前iPhone/iPad顶部的状态栏(带有时间,电池和网络连接)对于非视网膜屏幕是20像素,对于视网膜屏幕是40像素,但是为了将来证明我的应用程序我想要能够在没有硬编码值的情况下确定这一点.是否可以通过编程方式计算出状态栏的高度?

uikit ios retina-display

272
推荐指数
8
解决办法
19万
查看次数

在iOS 7中更改后退按钮会禁用滑动以返回导航

我有一个iOS 7应用程序,我在这里设置一个自定义后退按钮,如下所示:

    UIImage *backButtonImage = [UIImage imageNamed:@"back-button"];
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];

    [backButton setImage:backButtonImage forState:UIControlStateNormal];
    backButton.frame = CGRectMake(0, 0, 20, 20);

    [backButton addTarget:self
                   action:@selector(popViewController)
         forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    viewController.navigationItem.leftBarButtonItem = backBarButtonItem;
Run Code Online (Sandbox Code Playgroud)

但是这会禁用iOS 7"从左向右滑动"手势以导航到之前的控制器.有谁知道如何设置自定义按钮并仍然启用此手势?

编辑:我试图设置viewController.navigationItem.backBarButtonItem,但这似乎并没有显示我的自定义图像.

uinavigationcontroller uibarbuttonitem uiviewanimation ios ios7

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

Xcode持续集成配置文件错误

我试图在Mavericks上的Xcode 5中设置持续集成.如果我有一个机器人做一个新的干净项目构建,它完成没有错误.如果我让机器人在我的实际项目上进行构建,我会收到以下错误:

未找到匹配的配置文件:您的构建设置使用UUID"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"指定配置文件,但是,未找到此类配置文件.CodeSign错误:SDK"iOS 7.0"中的产品类型"应用"需要代码签名

如果我在服务器计算机上提取最新的源代码并在服务器上构建/存档它,它会按预期工作.所有预期的证书和公钥都包含在钥匙串中.我试图更新项目中的所有配置文件设置,并构建目标方案点.有没有人有任何想法如何解决此错误?

编辑:破解打开项目文件并查看UUID后,从我可以告诉UUID的配置文件中找不到它确实存在.也许这是构建无法访问配置文件或钥匙串证书的某种权限问题?

xcode5

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

UITextView链接点击识别被延迟

在iOS 7应用程序中,我有一个UITextView链接,但点击链接不会触发.它只响应尴尬的"轻拍".我希望它在用户点击它时立即响应,就像UIWebView链接点击工作方式一样.这是我的设置:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."];
    [text addAttribute:NSLinkAttributeName value:@"myurl://tapped" range:NSMakeRange(6, 16)];

    self.textView.attributedText = text;
    self.textView.editable = NO;
    self.textView.delaysContentTouches = NO;
}

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
    if ([[URL scheme] isEqualToString:@"myurl"])
    {
        // Handle tap

        return NO;
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

shouldInteractWithURL方法的Apple文档说明:"如果用户点击或长按URL链接,文本视图将调用此方法".长按工作正常,但水龙头似乎不起作用.

有谁知道怎么让这个立即回应?

objective-c uitextview ios

35
推荐指数
3
解决办法
1万
查看次数

如何使用iOS中的发布模式构建调试问题?

我正在开发一个iOS应用程序,我注意到一个错误,只有当应用程序在发布模式下构建时才会重现.我发现运行我构建的发布模式应用程序的唯一方法是构建存档,使用我的调试配置文件对其进行签名,以及对我的设备进行临时部署.然而,使用这种方法,我无法使用调试器附加,并且我甚至不确定是否可以附加它,如果在发布版本在代码上运行优化器之后它可以正常工作.

有没有人知道调试一个只在应用程序在发布模式下构建时可重现的问题的好方法?

xcode ios

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

在单元格上设置角半径会导致UICollectionView的性能下降

我有一个UICollectionView只有几个细胞(约20).这个系列的性能非常好.但是,一旦我尝试围绕UICollectionViewCells这个视图呈现的角落,我的表现就会受到重创.在我的cell的init方法中,这是我添加的唯一一行导致这个:

[self.layer setCornerRadius:15];
Run Code Online (Sandbox Code Playgroud)

由于这是在init方法中,我正在重新使用单元格,我不明白为什么这应该导致我的问题.

我尝试使用以下多种组合来调整销售的光栅化和不透明度,但仍然没有效果:

[self.layer setMasksToBounds:YES];
[self.layer setCornerRadius:15];
[self.layer setRasterizationScale:[[UIScreen mainScreen] scale]];
self.layer.shouldRasterize = YES;
self.layer.opaque = YES;
Run Code Online (Sandbox Code Playgroud)

他们的一些设置或技巧是为了改善UICollectionView具有圆角的单元格的性能吗?

ios uicollectionview uicollectionviewcell

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

在app删除时没有清理iCloud ubiquity容器?

我将带有Core Data的iCloud添加到应用程序商店中已存在的应用程序中,因此我需要测试升级方案.但是,当我从我的设备中删除我的应用程序并从Xcode重新安装它时,我注意到设备上我的ubiquity容器文件夹中的所有内容都是持久的!这非常令人讨厌,因为当我尝试从我指定的事务日志目录上传文件时iCloud最终会感到困惑,并且经常超时.我最终需要指定一个新的事务日志位置才能让它再次工作,这对我的测试显然不会起作用.

以下是我收到的错误:

PFUbiquitySafeSaveFile waitForFileToUpload :: CoreData:Ubiquity:(0)permanentLocation ::/private/var/mobile/Library/Mobile Documents/XXXXXXXXXX~appnamegoeshere/DatabaseTransactionLogs/mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20/iCloudData/8u0BfiCwOkHHa~o8hF4bunW~ zmdS_C8om5efuugxRaA =/receipt.0.cdt safeLocation:/私营/无功/移动/图书馆/移动文件/ XXXXXXXXXX〜appnamegoeshere/DatabaseTransactionLogs/mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20/iCloudData/8u0BfiCwOkHHa〜o8hF4bunW〜zmdS_C8om5efuugxRaA =/mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20.0.cdt currentLocation:/私营/无功/移动/图书馆/移动文件/ XXXXXXXXXX〜appnamegoeshere/DatabaseTransactionLogs/mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20/iCloudData/8u0BfiCwOkHHa〜o8hF4bunW〜zmdS_C8om5efuugxRaA =/mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20.0.cdt

kv :( null)

文件的安全保存失败,错误:错误域= NSCocoaErrorDomain代码= 512"文件上载超时." UserInfo = 0x1e5b6b10 {NSLocalizedDescription =文件上传超时.}

有谁知道如何在app安装之间清除无处不在的容器?即使从应用程序设置中删除ubiquity容器并重新发布它也无法解决此问题.理论上的客户只需删除应用程序然后删除它们的iCloud文件就能解决这个问题.这个问题确定问题的原因是非常令人沮丧的 - 任何建议都表示赞赏!

core-data ios icloud

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

我可以在后台更新iOS企业应用程序,就像App Store应用程序一样吗?

我有一个iOS企业应用程序,我们无线分发到我们的设备.目前,该应用程序每天轮询我们的服务器一次,以查看是否有应用更新.如果有,我们尝试通过让应用程序调用以下代码来安装它:

        NSURL *installUrl = [NSURL URLWithString:[NSString stringWithFormat:@"itms-services://?action=download-manifest&url=%@", plistUrl]];
        [[UIApplication sharedApplication] openURL:installUrl];
Run Code Online (Sandbox Code Playgroud)

这会导致应用程序通过警告对话框提示用户安装更新.如果他们单击安装,应用程序将关闭并下载并安装更新.

我想知道iOS 7的企业应用程序是否有类似于AppStore的自动更新?我希望能够更新我们的应用程序,而无需用户按下更新按钮,并且能够在用户无需等待安装时更新.

ios enterprise-distribution ios7

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

下载iOS时流视频

我正在使用iOS 7,我有一个.mp4视频,我需要在我的应用程序中下载.视频很大(约1 GB),这就是为什么它不包含在应用程序中的原因.我希望用户能够在开始下载后立即开始观看视频.我还希望视频能够在iOS设备上缓存,以便用户以后不需要再次下载.播放视频的常规方法(渐进式下载和实时流式传输)似乎都不允许您缓存视频,因此我创建了自己的Web服务,将视频文件分块并将字节流式传输到客户端.我使用NSURLConnection启动流式HTTP调用:

self.request = [[NSMutableURLRequest alloc] initWithURL:self.url];
[self.request setTimeoutInterval:10]; // Expect data at least every 10 seconds
[self.request setHTTPMethod:@"GET"];
self.connection = [[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:YES];
Run Code Online (Sandbox Code Playgroud)

当我收到数据块时,我将它附加到文件的本地副本的末尾:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
     NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:[self videoFilePath]];
     [handle truncateFileAtOffset:[handle seekToEndOfFile]];
     [handle writeData:data];
}
Run Code Online (Sandbox Code Playgroud)

如果我让设备运行,文件下载成功,我可以使用MPMoviePlayerViewController播放它:

NSURL *url=[NSURL fileURLWithPath:self.videoFilePath];
MPMoviePlayerViewController *controller = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
controller.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
[self presentMoviePlayerViewControllerAnimated:controller];
Run Code Online (Sandbox Code Playgroud)

但是,如果我在文件完全下载之前启动播放器,则视频开始播放就好了.它甚至可以在顶部擦洗条上显示正确的视频长度.但是当用户到达视频中我在视频开始之前完成下载的位置时,视频就会挂起.如果我关闭并重新打开MPMoviePlayerViewController,那么视频会播放,直到它到达我再次启动MPMoviePlayerViewController时的任何位置.如果我等到整个视频下载完毕,那么视频播放没有问题.

我没有收到任何事件,或者在发生这种情况时打印到控制台的错误消息(视频启动后永远不会发送MPMoviePlayerPlaybackStateDidChangeNotification和MPMoviePlayerPlaybackDidFinishNotification).似乎还有其他东西告诉控制器视频的长度是什么,而不是洗涤器使用的...

有谁知道可能导致这个问题的原因是什么?我不一定要使用MPMoviePlayerViewController,所以如果在这种情况下使用不同的视频播放方法,我就是为了它.

相关未解决的问题:

使用AVURLAssets进行AVPlayer和逐行视频下载

iOS上的渐进式视频下载

如何在IOS中下载进度视频文件

更新1 我发现视频停顿确实是因为视频开始播放时的文件大小.我可以通过在开始下载之前创建一个归零文件来解决这个问题,并在我去的时候覆盖它.由于我可以控制视频流服务器,因此我添加了一个自定义标头,因此我知道正在流式传输的文件的大小(流式文件的默认文件大小标头为-1).我在didReceiveResponse方法中创建文件,如下所示:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{        
    // Retrieve the size …
Run Code Online (Sandbox Code Playgroud)

video-streaming progressive-download mpmovieplayer ios nsurlsessiondownloadtask

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

如果屏幕被锁定或活动应用程序更改,HKWorkoutSession不会恢复自定义锻炼应用程序

我有一个watchOS 2应用程序,在运行期间显示健康数据.我使用HKWorkoutSession开始锻炼,如下所示:

self.workoutSession = HKWorkoutSession(activityType: .Running, locationType: .Outdoor)
self.workoutSession!.delegate = self;
self.healthStore.startWorkoutSession(self.workoutSession!)
Run Code Online (Sandbox Code Playgroud)

当屏幕关闭一段时间后,这会使我的应用程序保持在前台,用户稍后再次查看它.

现在让我们说在锻炼期间,用户切换到另一个应用程序或手表屏幕锁定(由于手表没有足够紧固),然后用户通过双击数字表冠重新启动我正在运行的应用程序.该应用程序从中断处继续恢复并继续按预期获取健康数据,但我的应用程序将不再保留在前台.锻炼仍在进行中,因为在表盘上我仍然可以看到顶部的锻炼图标,心率监测器继续收集心率数据,但应用程序拒绝留在前台.

有没有人知道如何在锻炼期间将锻炼应用程序恢复到前台,即使屏幕锁定或用户切换到其他应用程序?

healthkit watchkit watchos-2

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