Xcode 7 GM-无法调用enumerateObjectsUsingBlock
我刚刚下载了Xcode 7 gm,并尝试使用iOS 9调用NSArray的方法enumerateObjectsUsingBlock,但它显示了构建时间的以下错误. Incompatible block pointer types sending 'void (^)(SKSpriteNode *__strong, NSUInteger, BOOL *)' to parameter of type 'void (^ _Nonnull)(SKNode * _Nonnull __strong, NSUInteger, BOOL * _Nonnull)' 这是有关EnumerateObjectSusingBlock方法的Apple文档: - (void)enumerateObjectsUsingBlock:(void (^)(ObjectType obj, NSUInteger idx,
6 2024-04-01
编程技术问答社区
用Swift 2进行Base64编码/解码
我的代码在Xcode 6.4上运行良好,Swift 1.2: var imageData = UIImageJPEGRepresentation(firstImageView.image!, 0.2) let base64String = imageData!.base64EncodedStringWithOptions(.allZeros) 我搬到Xcode 7和Swift 2后出现以下错误: 表达的类型是模棱两可的,没有更多上下文 所以我尝试了: let base64String = imageData!.base64EncodedStringWithOptions(options: NSDataBase64EncodingOptions.allZeros) 但是NSDABASE64CODINGOPTIONS中没有" allerzeros"选项. 解决方案 您应该使用.Encoding64CharacterLineLength而不是.al
36 2024-03-27
编程技术问答社区
SWIFT:如何在用户杀死应用程序时仍能运行一个函数
我正在为ios9使用Swift 2和Xcode7.我想知道我是否可以维护运行"永远"的函数(检查要删除的内容),即使用户杀死了应用程序? 我正在根据某些规则和时间从联系列表中删除联系人.它运行正常,但仅在应用程序打开或第二个计划中.我想使这个应用程序能够删除这些联系人,即使用户杀死了这些联系人. 解决方案 用户打开应用时,您可以使用背景线程.但是,如果将终止该应用程序,则无法选择运行功能. 在此处查找App LifeCycle,然后重新设计您的体系结构:其他解决方案 如果用户杀死了应用程序不再运行,因此您的代码不再运行.没有这样的状态,您的代码/应用程序可以在可能的地方进行. 由" Kill",我不是说"背景".背景应用程序不同. Check Apple's docs on the different app states (see m.albin's answer) as well as various 处理这些应用程序状态的策略. 其他解决方案
14 2024-03-27
编程技术问答社区
iOS 9 UIPasteboard无法在后台工作
ios 9的[UIPasteboard generalPasteboard].string当应用在运行背景任务或今天的窗口小部件的后台时,将变为null. 我们不能再在后台检索剪贴板文本了吗? 解决方案 您能解释一下您在哪里启动GeneralPasteboard? 这就是我要做的: 在您的 App委托的应用程序didBecomeative方法中放入此代码: [[NSNotificationCenter defaultCenter] postNotificationName:@"appDidBecomeActive" object:nil]; 接下来,在您的当前活动视图控制器的init方法订阅通知. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(returnFrom
8 2024-03-26
编程技术问答社区
iOS9导航栏的返回按钮不工作
iOS 9之前一切正常工作. 但是,当该应用在iOS 9上运行时,当按钮被敲击时什么都不会发生 另外,我无法在第一个segue之后进入下一个视图. 例如, 主页 - >点击一个按钮以查看1-> segued以查看1 - >点击按钮以查看2->什么都没发生 我使用下面的代码执行SEGUE, UIViewController *push = [self.storyboard instantiateViewControllerWithIdentifier:@"storyboard_id"]; [self.navigationController pushViewController:push animated:YES]; 此问题仅在iPhone发生 但是,在模拟器上运行时,该应用程序可完美地工作. 谢谢您的帮助. 解决方案 最后,解决了问题. 我一直在创建一个新项目,并使用相同的方法来执行segue,并且完美地表现出来.因此,我排除了Xcode的
10 2024-03-26
编程技术问答社区
在AVPlayerViewController的纵向模式下无法隐藏状态栏
我正在开发一个应用程序,该应用首先提供了一个带有一堆按钮的UicollectionView,该按钮将带有自定义"通过全屏" segue的AvplayerviewController打开一个子类. uiviewControllerBaseedStatusBarAppeApearance在我的info.plist中设置为Yes.plist. 这是一个小的(不得不缩放,对不起)接口构建器中所有视图控制器的屏幕截图: segue是在IB中定义的.当用户点击收集视图单元格时,我使用performsegueWithIdentifier()进行执行. 我现在遇到的问题是: 为什么在肖像模式下进行相反的时,状态栏与景观模式下的播放控件一起隐藏? 使我的AvplayerviewController子类中的prefersstatusbarhidden()返回true无济于事.什么给? 解决方案 刚刚发现了一个解决方案: extension UINavigationCon
10 2024-03-21
编程技术问答社区
如何替换MPMoviePlayer的通知?
在iOS 9 mpmovieplayer中,他的所有组件都被弃用. 我们使用mpmovieplayercontroller通知(例如MPMoviePlayerLoadStateDidChangeNotification, MPMovieDurationAvailableNotification, MPMoviePlayerPlaybackStateDidChangeNotification, MPMoviePlayerReadyForDisplayDidChangeNotification)来跟踪视频服务质量.但是现在使用AvplayerviewController,我找不到这些通知的正确替换. 我现在如何替换这些通知? 解决方案 AVPlayerViewController其用法与MPMoviePlayerViewController有很大不同.您不使用通知,而是使用关键值观察来确定与AVPlayerViewController关联的AVPlayer对象的当前特征.根据文
12 2024-03-21
编程技术问答社区
如何显示AVPictureInPictureController?
我正在尝试使用 avpictureinpicturecontroller 播放视频,该>最近在 ios9 中引入了视频,使用此代码: AVPlayer *_AVPlayer = [AVPlayer playerWithURL:url]; AVPlayerLayer *_layer = [AVPlayerLayer playerLayerWithPlayer:_AVPlayer]; _layer.frame = [[UIApplication sharedApplication] delegate].window.bounds; AVPictureInPictureController *_AVPictureInPictureController = [[AVPictureInPictureController alloc] initWithPlayerLayer:_layer]; _AVPictureInPictureController.delegate = self; 但是
12 2024-03-21
编程技术问答社区
AVPlayer不能播放音频-iOS 9, Objective-C
我正在尝试从应用程序中的URL播放音频.一切都如iOS 8(模拟器和物理设备)所预期发生的.对于iOS 9,它在模拟器中起作用,但是在设备上,音频根本不播放.流媒体出现,如果我单击播放,则进度栏也表明音频正在加载和播放,但声音不会出现.这个问题正在iOS 9物理设备中发生.它可以与iOS 8物理设备一起工作. 我创建了一个简单的按钮.单击按钮时,加载了AvplayerviewController,并使用给定的URL初始化Avplayer.代码如下: #import "ViewController.h" #import #import @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do a
24 2024-03-21
编程技术问答社区
iOS 9中的MPMoviePlayer
我已经在iOS 8中发挥了作用,可以在后台播放电影,现在当我想在iOS 9中使用它时,它给了我警告,并说最好不要使用mpmovieplayer,而是使用avplayer.但是我对Avplayer一无所知.如何将其转换为适当的功能,而无需警告使用Avplayer而不是MPMoviePlayer? 这是功能: func playVideo() ->Bool { let path = NSBundle.mainBundle().pathForResource("video", ofType:"mov") //take path of video let url = NSURL.fileURLWithPath(path!) moviePlayer = MPMoviePlayerController(contentURL: url) //asigning video to moviePlayer if let player = m
14 2024-03-21
编程技术问答社区
AVURLAsset的缓存行为
我正在使用各种AV/MP播放器类的Avurlasset,似乎忽略了我的服务器的缓存标头.我正在使用逐渐下载的小型视频(不是HLS). 有没有办法确保视频被缓存?有没有一种方法来预装视频,以便他们立即播放?我已经尝试了简单地更改Nsurlcache中的参数,但是到目前为止,我还没有运气.我也找不到任何直接操纵URL获取的方法的直接方法. 我不想单独下载文件并指向本地版本,因为我不想等待文件在开始播放之前完全下载.理想情况下,我也想避免自己管理本地磁盘缓存. 解决方案 有一个称为Avassetresourceloader的类.我认为您应该实施两种AvassetResourceloaderdelegate 更多信息在这里.
6 2024-03-21
编程技术问答社区
iOS 9:AVFoundation导出会话缺少音频
我正在使用以下代码将视频与原始音频合并时.它一直在工作,直到我升级为ios9.任何面临同一问题和解决方面的帮助的人都将不胜感激.一整天研究后,我找不到任何东西. AVAssetTrack *videoTrack = nil; AVAssetTrack *audioTrack = nil; CMTime insertionPoint = kCMTimeZero; if([[url tracksWithMediaType:AVMediaTypeVideo] count] != 0) { videoTrack = [url tracksWithMediaType:AVMediaTypeVideo][0]; } if([[url tracksWithMediaType:AVMediaTypeAudio] count] != 0) { audioTrack = [url tracksWithMediaType:AVMediaTypeAudio][0]; } // Ins
12 2024-03-21
编程技术问答社区
在iOS9中观察AVPlayerItem的值
我有一个使用AVPlayer从远程URL播放AVPlayerItem(视频)的应用程序.在iOS 6-8中,我一直在观察loadedTimeRanges的AVPlayerItem's值,以通知我何时playerItem准备好由玩家播放.我相信,这在观察物品的duration值时也有效. . 更新iOS 9 beta后,我观察到的AVPlayerItem上的值都没有到达observeValueForKeyPath -Method.就像我根本没有观察它们一样. AVPlayer上的值仍被通知,但在AVPlayerItem上没有通知.这可能是一个错误,还是这里的环境有所改变?我什么都找不到. 为了澄清,在iOS 6-8中,一旦有任何加载时间范围,视频就开始播放.在iOS9中,我从未在加载任何时间范围时被通知. 更新 观察AVPlayerItem的值status后,我现在已经确认该项目的状态已更改为Failed.通过在失败后记录该项目的NSError,我得到了: Er
18 2024-03-21
编程技术问答社区
AVPlayer / AVPlayerLayer没有出现在使用自动布局的子视图中
我正在尝试在子视图中显示一个视频和一些文本的视频.我使用了import Foundation import AVFoundation class JSAVPlayerView : UIView { var player:AVPlayer? { get { return (self.layer as! AVPlayerLayer).player } set(newPlayer) { (self.layer as! AVPlayerLayer).player = newPlayer } } override class func layerClass() -> AnyClass { return AVPlayerLayer.self } } 我使用JSAVPlayerView作为UICollectionViewCell中的子视图,如下所示,但我只看到JSAVPlayerView的背景. class JSOnBoardingTutorialPageView : UICollecti
8 2024-03-21
编程技术问答社区
如何在iOS 9中使用AVCaptureSession与Slide Over和Split View?
我的团队正在为 bar码扫描, id扫描和 ocr .我们使用设备的摄像头,特别是AVCaptureSession来获取我们执行处理的视频帧. 我们正在探索新的iOS 9多任务功能滑行并拆分视图. Apple建议选择以相机为中心的应用程序选择这些功能,其中使用整个屏幕进行预览和快速捕获时刻是一个主要功能(但是,我们的客户可能拥有不属于此类别的应用程序(例如移动银行应用程序),因此我们不能强迫他们选择退出,而是需要处理SDK中的新功能.我们正在探索最好的方法,因为目前的文档并没有真正告诉我们该怎么做. 我们使用简单的相机示例应用程序来分析用例.该示例应用程序可在 github 上获得,并且它自ios 9 beta 5. 开始开发. 从示例应用程序中,可以清楚地看到使用幻灯片时发生哪些系统事件以及使用拆分视图时. 当我们的应用程序是主要的,并且使用滑行时,我们会得到UIApplicationWillResignActiveNotification和AVCapt
10 2024-03-21
编程技术问答社区
通话后恢复AVAudioPlayer不工作
已经有一些看似类似的问题,但是经过数小时的搜索和实验,我找不到明确的答案.我能找到的最接近的是 4年前暗示了"已知错误"的答案如何解决它. 我有一个AudioPlayer类,它正在使用Avaudioplayer播放音频文件,并聆听AVAudioSessionDelegate方法beginInterruption和endInterruption.我知道不能保证endInterruption,因此我将布尔值存储在beginInterruption中,然后将音频播放重新启动在applicationDidBecomeActive中. . 如果手机接到电话并且用户将其拒绝或让其转到语音邮件,则这些都可以正常工作.一旦我的应用返回到活动状态,音频播放就可以恢复. 这是我得到怪异行为的地方:如果用户答案呼叫,一旦他们挂断了一切,似乎可以按预期工作但是没有听起来通过耳机或扬声器发出声音. 我可以通过每秒打印音量和当前时间来验证音频在技术上是播放,但声音不会发出. 如果我等待2
20 2024-03-21
编程技术问答社区
多个UIVIew自动布局问题
我有一个带有四个子视图的UiviewController,其外观如下图,第一个子视图是屏幕的50%,其余三个子视图占据了其余50%的视图.在最低的第25%,其将占2:1的比率. Range.Remain占据了25%的视图.它将正确定位iPad景观视图,但在肖像视图中,首先视图超过70%.如何解决此 解决方案 我已经根据您想要的东西创建了设置.请检查以下屏幕截图. 这是创建此设置的步骤: 1.将四个视图添加到主视图中. 2.添加从棕色视图到主视图的领先,顶部和尾随空间限制. 3.从紫色视图中添加垂直间距和领先的约束. 4.从绿色视图添加垂直间距,落后和相等的高度约束. 5.从绿色视图添加底部空间约束到主视图. 6.从紫色视图到绿色视图添加水平间距和相等的宽度约束. 7.从橙色视图到紫色视图,添加垂直间距,前导,尾随和等高的约束.在大小检查器中,将此相等高度约束的乘数值从1更改为1.5(请参阅最后一个屏幕截图). 8.从橙色视图添加底部约束到绿色视图. 1
28 2024-03-21
编程技术问答社区
一个标签的约束是用IB添加的,一个标签的约束是用程序添加的
我的目标是将两个标签彼此放置.我将标签拖到了情节提要上的标签上,并将其固定在距顶部的随机距离,然后在视图中水平居中,导致蓝色约束. 然后,我将第二个标签标签拖到了情节板上,然后将其移到标签下方(例如,将两个标签隔开1英寸).现在,我试图通过编程方式设置Labelb的约束,以将其移至标签顶部: import UIKit class ViewController: UIViewController { @IBOutlet weak var labelA: UILabel! @IBOutlet weak var labelB: UILabel! override func viewDidLoad() { super.viewDidLoad() labelB.translatesAutoresizingMaskIntoConstraints = false //labelA.translatesAutor
12 2024-03-21
编程技术问答社区
以编程方式添加标签,与故事板中的标签保持一致
所需的视图: 在故事板中,我有两个标签,上面有我在AutoLayout中创建的蓝色背景.他们的位置永远不会改变.接下来,我想在蓝色背景标签以下的cellForRowAtIndexPath中的代码中添加1到10个标签. 我正在努力将代码(棕色背景)中添加的标签与在AutoLayout(蓝色背景)中创建的标签对齐. 以下是我失败的尝试: 两种失败的方法: 在cellForRowAtIndexPath中获取" b autoLayout静态标签"的框架,并将X位置用于动态标签.没有工作. 添加约束也没有起作用 - 也许我没有正确添加约束. 这是代码: class TableViewController: UITableViewController { var cellHeight = [Int: CGFloat]() override func viewDidLoad() { super.viewDidLoad(
12 2024-03-21
编程技术问答社区
UIStackView和UITableViewCell中的多行标签
我想拥有一个自定义UITableViewCell,其中有许多垂直堆叠的UILabel s所有这些都可以包含包含多行的文本.使用了iOS9中的新UIStackView以及我认为这很简单的细胞自我规模机制,但我无法正常工作.我正在使用Xcode7beta3. 我创建了一个简单的测试应用程序.这是IB中的设置: UIStackView是垂直的,UIStackViewDistribution.Fill和UIStackViewAlignment.Fill,但我基本上尝试了所有组合而没有成功. UILabel s具有numberOfLines = 0和lineBreakMode = .ByWordWrapping. 代码: class Cell: UITableViewCell { @IBOutlet var label1: UILabel! @IBOutlet var label2: UILabel! } class MasterViewContr
2 2024-03-21
编程技术问答社区