Tag: cocoa触摸

如何以编程方式为UINavigationControllerinheritanceUINavigationBar?

我使用一个自定义的drawRect函数在iOS4中的应用程序上绘制UINavigationBar ,它不使用图像,只使用CoreGraphics。 既然你不能在iOS5的UINavigationBar类中实现drawRect,Applebuild议子类UINavigationBar 。 当navigationBar属性是只读的时,如何用UINavigationBar子类replaceUINavigationController (所以它将与iOS4和iOS5兼容)? @property(nonatomic, readonly) UINavigationBar *navigationBar 我没有在应用程序中使用XIB,所以将UINavigationBar添加到NIB并通过InterfaceBuilder更改类不是一个选项。

核心蓝牙广告并在后台扫描

我一直在试图设置一个应用程序,使设备都扫描外设和广告作为外设。 目标是当两台设备通过蓝牙发现相互靠近时在后台被唤醒。 从Apple文档看来,您应该能够在后台运行BLE(启用蓝牙 – 中央和蓝牙外设后台模式),而且我的应用程序在一台设备处于前台时工作。 首先,我宣传这样的数据: NSDictionary *advertisingData = @{CBAdvertisementDataLocalNameKey:@"my-peripheral", CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:identifier]]}; // Start advertising over BLE [peripheralManager startAdvertising:advertisingData]; 然后我设置设备扫描数据: NSArray *services = @[[CBUUID UUIDWithString:identifier]]; [centralManager scanForPeripheralsWithServices:services options:nil]; 但是,当两者都进入后台(设备必须被locking),蓝牙无法发现和 – (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI 永远不会被任何设备调用。 我怎样才能解决这个问题? 谢谢

我滥用UIViewController子类?

在试图找出为什么viewWillAppear没有在我的应用程序中被调用,我遇到了什么可能是我对UIViewController子类的打算使用的严重误解。 根据以下的post, viewWillAppear在使用addSubView的时候不会运行! 和链接到这个博客文章: http : //blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/ UIViewController子类只应在非常特定的情况下发生。 最值得注意的是当直接添加到UIWindow,或其他苹果创build自定义控制器像UINavigationControllers。 我当然有罪,UIViewController子类的视图添加到其他UIViewController子类的视图。 事实上,我认为这或多或less是苹果公司实施MVC的总体思路……一个整体的VC,与其他风投公司一起,都乐于让他们的委托方法叫做。 如果在这个post中描述的模型中有很多视图(根据定义需要控制)在应用程序中来回移动,并且有很多screenfull,每个screenfull都应该有一个主VC子类,所有的子视图都由自定义控制器(这恰好控制视图)是简单的NSObject的子类。 在这种情况下,UIViewControllers应该只能直接到窗口或UINavigationController,UITabBarController等? 你保证在这种情况下获得UIVC委托方法吗? 这与当viewcontroller的视图是另一个VC的子视图时手动调用委托方法有什么区别? 老实说,这似乎是一个巨大的浪费时间。 ViewDidLoad,viewDidLoad,viewDidUnload,viewWillAppear,viewWillDisappear的自定义实现不要提到像“视图”等属性一样简单的事情… 所以基本上,要么我完全错了,要么就是疯狂追逐。 如果不能指望UIViewController的子类来调用viewWillAppear,为什么不手动调用该方法,并完成它呢? 为什么要复制UIViewController的所有感知function?

在Grand Central Dispatch中使用dispatch_sync

任何人都可以用真正清楚的用例来解释GCD中dispatch_sync的用途是什么? 我不明白在哪里,为什么我不得不使用这个。 谢谢!

如何caching或预加载SKLabelNode字体?

我正在做一个Sprite Kit应用程序,在我的场景中,我添加了一个SKLabelNode。 当我加载SKScene时,我注意到了一个相当大的滞后尖峰。 在分析应用程序后,我发现它来自创build一个带有纸莎草字体的SKLabelNode(尽pipe字体无关紧要)。 当我删除标签时,场景几乎立即启动,但标签需要额外的1-3秒。 我很确定这是从加载字体,因为当我回到主菜单,再次玩游戏,它立即再次启动。 现在有一种方法可以提前预加载字体,所以当玩家select这个级别的时候没有很大的停顿。

NSString到NSArray

我想分裂成一个NSArray的NSString 。 例如,给出: NSString *myString=@"ABCDEF"; 我想要一个NSArray像: NSArray *myArray={A,B,C,D,E,F}; 如何用Objective-C和Cocoa做到这一点?

在NSString中解码Base-64编码的PNG

我有一些基于64编码的NSData ,我想解码它,我看过一个像这样的例子 NSData* myPNGData = [xmlString dataUsingEncoding:NSUTF8StringEncoding]; [Base64 initialize]; NSData *data = [Base64 decode:img]; cell.image.image = [UIImage imageWithData:myPNGData]; 然而,这给了我一个错误的负载,我想知道该怎么做才能得到这个工作。 是否有某种types的文件需要导入到我的项目中,还是必须包含框架? 这些是我得到的错误 Use of undeclared identifier 'Base64' Use of undeclared identifier 'Base64' Use of undeclared identifier 'cell' 我到处寻找,无法弄清楚什么是正确的事情。

为什么didBeginContact被多次调用?

在Sprite Kit的内置物理引擎中使用Sprite Kit和接触检测的iOS游戏中,每次与敌人接触时,我会将Hero的数字减less1。 这是从didBeginContact方法完成的。 然而,似乎这个方法不只是一次,当接触开始时调用,而是连续调用,只要英雄和敌人重叠:当我在该方法中设置断点时,我可以看到,它是完全相同的作为contact.bodyA和contact.bodyB存在的物理实体实例。 结果是英雄将会失去多重生命,尽pipe他只能通过一个单一的敌人。 如果英雄再次遇到同一个敌人,他应该seenEnemies一次,所以我不能只保留一个被seenEnemies哈希集来处理上面的问题。 现在的问题是:你如何确保每个英雄/敌人的联系人都只有一个生命被扣除?

本地化iOS上的剪切|复制|粘贴菜单

我有一些本地化丹麦应用程序的问题。 (语言,而不是糕点) 我已经在我的info.plist中将CFBundleDevelopmentRegion设置为da_DK作为丹麦语,但是出现文本input的popup窗口仍然是英文,即使是在运行丹麦语操作系统的手机上。 乔布斯的名字如何改变这个? 该testing设备是一个非越狱iPhone 4S运行iOS 5.1与丹麦作为其iOS设置,并与丹麦iTunes帐户关联。 我不使用.xibs进行devise。 所有接口都被编程为视图控制器。

将图像转换为CVPixelBuffer进行机器学习Swift

我正在尝试在2017年的WWDC上演示的苹果示例Core ML型号正常工作。 我正在使用GoogLeNet尝试对图像进行分类(请参阅Apple机器学习页面 )。 该模型将CVPixelBuffer作为input。 我有一个名为imageSample.jpg的图片,我正在使用这个演示。 我的代码如下: var sample = UIImage(named: "imageSample")?.cgImage let bufferThree = getCVPixelBuffer(sample!) let model = GoogLeNetPlaces() guard let output = try? model.prediction(input: GoogLeNetPlacesInput.init(sceneImage: bufferThree!)) else { fatalError("Unexpected runtime error.") } print(output.sceneLabel) 我总是得到输出中意外的运行时错误,而不是图像分类。 我的代码转换图像如下: func getCVPixelBuffer(_ image: CGImage) -> CVPixelBuffer? { let imageWidth = Int(image.width) let imageHeight = Int(image.height) let attributes : […]