我需要在用户进行应用内购买时设置全局变量.我可以使用NSUserDefaults,只有一个名为"已购买"的密钥,但这似乎不太安全.
安全存储数据的最佳方法是什么,以便我知道用户是否已购买?
例如,在特定视图中,我需要知道是否显示"购买"按钮.显然,如果他们已经购买了它应该被隐藏.
我无法在设备上构建和测试,因为Xcode给了我这个错误:
ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /.../Classes/AddThis/libAddThis.a for architecture armv7s
Run Code Online (Sandbox Code Playgroud)
如何更新此库以支持armv7s?
我有一个UILabel设置字体系统粗体14.0,最小字体大小为12.我希望标签填充7行,如果它太大,将文本缩小到12像素,在这种情况下可能更多超过7行,但仍然适合它的原始帧.
我已经尝试将行数设置为7和0.无论哪种方式,文本只填充默认大小(14)的7行并截断尾部.如何让文本缩小到12px以便我可以看到更多文本?
(我会发布更多代码,但其中大部分是在IB中设置的).
编辑:我将自动收缩选项设置为"最小字体大小",大小为12.即使我将其设置为明显像8这样的东西,也不会发生收缩.
我有一个工作的Xcode项目,其中一个视图中包含Cocos2d.我现在需要添加Box2d.我试图拖动文件夹的Box2D到我的cocos2d-2.X-ARC-的iOS文件夹的目录库和添加到目标,但我得到这个当我编译:
(in b2BroadPhase.cpp)
'Box2D/Collision/b2BroadPhase.h' file not found
Run Code Online (Sandbox Code Playgroud)
我敢肯定,这只是我将遇到的许多错误中的第一个.我错过了什么步骤才能获得我项目中编译的所有Box2d文件?
所有box2d文件都列在cocos2d-library目标的编译源中.
为什么这么难做呢?为什么它不像其他图书馆那样工作?
AND - 我必须将项目中的每个.m重命名为.mm吗?这几乎是不可能的,因为这是一个包含许多文件的大型xcode项目.我只想在一个视图中使用Box2d.
针对LearnCocos2D给出的答案的其他信息 -
我的文件夹结构(在Finder中)如下所示:
Root = MyProject.xcodeproj,MyProject文件夹,cocos2d-2.x-ARC-iOS文件夹在cocos2d-2.x-ARC-iOS文件夹中有一个名为libs的文件夹.在该文件夹中,我有Box2D文件夹,以及Cocos2d,CocosDenshion等.
在XCode中,我有一个PROJECT(MyProject)和2个TARGETS(cocos2d-library,MyProject)PROJECT和TARGETS都有"Header Search Paths".我设置哪一个?它应该是递归的还是非递归的?当我将Box2D文件夹拖入Xcode时,我将其设置为哪个目标?
我的项目文件位于/ Users/me/Dropbox/iOS/MyProject.那么我究竟要为标题搜索路径输入什么?/Users/me/Dropbox/iOS/MyProject/cocos2d-2.x-ARC-iOS/libs似乎不起作用.
另一个更新 - /Users/me/Dropbox/iOS/MyProject/cocos2d-2.x-ARC-iOS/libs作为MyProject TARGET中的标题搜索路径似乎让我超过了Box2D错误.然后我找到了'cassert'文件找不到错误.通过将视图控制器,它的父级和AppDelegate更改为文件类型"Objective-C++ Source",就像你建议的那样.现在...
现在我已经得到了在NSObjCRuntime.h NSZone.h,NSObject的错误一连串的(预期不合格-ID,未知类型名"的NSString"等).因此,您似乎要么使用Box2d/Cocos2d或UIKit应用程序创建应用程序.试图让两者都是一场彻头彻尾的噩梦.
我正在尝试在Core Data中建立关系.我有一个树木列表,每棵树都有一个水果列表.所以我有一个Tree实体和一个Fruit实体.
在代码中,我想在表格视图中列出树.当您单击树时,它应该显示在该树上生长的水果列表.
我如何建立这种关系?我需要提供Fruit一个名为tree的属性吗?我如何在代码中设置关系,例如当我创建一个Fruit如何将它与给定关联Tree?
我的自定义相机覆盖上有一个按钮,可以调用此方法:
- (void) changeFlash:(id)sender
{
//UIImagePickerControllerCameraFlashModeOff = -1,
//UIImagePickerControllerCameraFlashModeAuto = 0,
//UIImagePickerControllerCameraFlashModeOn = 1
NSLog(@"before %d", self.picker.cameraFlashMode);
switch (self.picker.cameraFlashMode) {
case UIImagePickerControllerCameraFlashModeAuto:
[(UIButton *)sender setImage:[UIImage imageNamed:@"flashOn"] forState:UIControlStateNormal];
self.picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;
break;
case UIImagePickerControllerCameraFlashModeOn:
[(UIButton *)sender setImage:[UIImage imageNamed:@"flashOff"] forState:UIControlStateNormal];
self.picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;
break;
case UIImagePickerControllerCameraFlashModeOff:
[(UIButton *)sender setImage:[UIImage imageNamed:@"flashAuto"] forState:UIControlStateNormal];
self.picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto;
break;
}
NSLog(@"after %d", self.picker.cameraFlashMode);
}
Run Code Online (Sandbox Code Playgroud)
self.picker.cameraFlashMode在更改之前和之后始终为0.我究竟做错了什么?
此外,闪存永远不会工作,即使它被认为卡在UIImagePickerControllerCameraFlashModeAuto.
我很难通过搜索结果筛选出如何做到这一点,我在文档中找不到任何具体内容.我只想下载文件并存储在Documents目录中.该文件的类型为.plist,但我不需要解析plist.就像我说的,我只需要将它保存到磁盘.
我是否使用AFHTTPRequestOperationManager?
这是我一直在尝试的:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//manager.responseSerializer = [AFPropertyListResponseSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:url parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
DLog(@"downloaded plist");
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
DLog(@"JSON DataError: %@", error);
}];
Run Code Online (Sandbox Code Playgroud)
如果我使用AFHTTPResponseSerializer,我得到这个:
Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: internal server error (500)"
Run Code Online (Sandbox Code Playgroud)
如果我使用AFPropertyListResponseSerializer,我得到这个:
Error Domain=AFNetworkingErrorDomain Code=-1016 "Request failed: unacceptable content-type: text/plain"
Run Code Online (Sandbox Code Playgroud)
但我甚至不确定我是否使用了正确的API.
根据Apple文档,我们应该做这样的事情来处理GC身份验证:
- (void) authenticateLocalUser
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
if(localPlayer.authenticated == NO)
{
[localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) {
if (!error && viewcontroller)
{
DLog(@"Need to log in");
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate.window.rootViewController presentViewController:viewcontroller animated:YES completion:nil];
}
else
{
DLog(@"Success");
}
})];
}
}
Run Code Online (Sandbox Code Playgroud)
我们获得了这些信息:
如果设备没有经过身份验证的播放器,Game Kit会将视图控制器传递给您的身份验证处理程序.显示时,此视图控制器显示身份验证用户界面.您的游戏应该暂停需要用户交互的其他活动(例如您的游戏循环),呈现此视图控制器然后返回.当播放器完成与其交互时,视图控制器将自动关闭.
我的问题是,我们如何知道此视图控制器何时被解雇,以及我们如何知道身份验证是否成功?
显然我需要知道身份验证是否有效,我需要知道何时恢复游戏,如果我不得不暂停它,因为提出了神奇的GC视图控制器.
有一些答案在那里如此,但在那里有一个情况UIScrollView还是UICollectionView存在,这是行不通的.
在touchesBegan对方法viewController永远不会被调用.
在屏幕上,我有一个UITextField在顶部.
在此之下,填满屏幕的其余部分是一个UICollectionView.
如果我触摸除了UITextField(显然包括集合视图)之外的任何地方我需要关闭键盘
那么最好的方法是什么?
对于这样一个常见的UI范例,似乎应该有一个众所周知的解决方案,但我还没有碰到它.
uiscrollview uiviewcontroller first-responder ios uicollectionview
当我在Xcode(5)中添加一个框架时,它会创建一个路径的野兽:
/Users/me/MyApp\ Subfolder1\ Subfolder2/MyApp\ Subfolder1\ Subfolder2/libraries/third-party-lib-2.0
Run Code Online (Sandbox Code Playgroud)
如何将此直接路径转换为相对路径,以便在项目打开的任何位置都能正常工作?
ios ×9
xcode ×3
afnetworking ×1
architecture ×1
box2d ×1
box2d-iphone ×1
camera ×1
core-data ×1
game-center ×1
gamekit ×1
path ×1
persistence ×1
plist ×1
uilabel ×1
uiscrollview ×1
xcode5 ×1