小编sol*_*eil的帖子

iOS应用内购买 - 判断用户是否已购买的最佳方式

我需要在用户进行应用内购买时设置全局变量.我可以使用NSUserDefaults,只有一个名为"已购买"的密钥,但这似乎不太安全.

安全存储数据的最佳方法是什么,以便我知道用户是否已购买?

例如,在特定视图中,我需要知道是否显示"购买"按钮.显然,如果他们已经购买了它应该被隐藏.

persistence in-app-purchase ios

5
推荐指数
1
解决办法
3542
查看次数

iOS - 文件不包含armv7s切片

我无法在设备上构建和测试,因为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?

architecture xcode ios

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

UILabel - 缩小文本而不是截断尾部

我有一个UILabel设置字体系统粗体14.0,最小字体大小为12.我希望标签填充7行,如果它太大,将文本缩小到12像素,在这种情况下可能更多超过7行,但仍然适合它的原始帧.

我已经尝试将行数设置为7和0.无论哪种方式,文本只填充默认大小(14)的7行并截断尾部.如何让文本缩小到12px以便我可以看到更多文本?

(我会发布更多代码,但其中大部分是在IB中设置的).

编辑:我将自动收缩选项设置为"最小字体大小",大小为12.即使我将其设置为明显像8这样的东西,也不会发生收缩.

uilabel ios

5
推荐指数
1
解决办法
8078
查看次数

如何将Box2d添加到现有的Xcode/Cocos2d项目中

我有一个工作的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应用程序创建应用程序.试图让两者都是一场彻头彻尾的噩梦.

xcode box2d cocos2d-iphone box2d-iphone

5
推荐指数
1
解决办法
4971
查看次数

在Core Data中设置父子关系

我正在尝试在Core Data中建立关系.我有一个树木列表,每棵树都有一个水果列表.所以我有一个Tree实体和一个Fruit实体.

在代码中,我想在表格视图中列出树.当您单击树时,它应该显示在该树上生长的水果列表.

我如何建立这种关系?我需要提供Fruit一个名为tree的属性吗?我如何在代码中设置关系,例如当我创建一个Fruit如何将它与给定关联Tree

core-data relational-database nsmanagedobject ios

5
推荐指数
1
解决办法
2647
查看次数

无法更改UIImagePickerController的cameraFlashMode

我的自定义相机覆盖上有一个按钮,可以调用此方法:

- (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.

camera uiimagepickercontroller ios

5
推荐指数
1
解决办法
915
查看次数

如何使用AFNetworking 2.0下载文件

我很难通过搜索结果筛选出如何做到这一点,我在文档中找不到任何具体内容.我只想下载文件并存储在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.

plist ios afnetworking afnetworking-2

5
推荐指数
1
解决办法
8200
查看次数

处理Game Center身份验证

根据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视图控制器.

authentication gamekit ios game-center

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

当视图包含UICollectionView时,在UITextField外的任何位置隐藏键盘

有一些答案在那里如,但在那里有一个情况UIScrollView还是UICollectionView存在,这是行不通的.
touchesBegan对方法viewController永远不会被调用.

在屏幕上,我有一个UITextField在顶部.
在此之下,填满屏幕的其余部分是一个UICollectionView.
如果我触摸除了UITextField(显然包括集合视图)之外的任何地方我需要关闭键盘

那么最好的方法是什么?

对于这样一个常见的UI范例,似乎应该有一个众所周知的解决方案,但我还没有碰到它.

uiscrollview uiviewcontroller first-responder ios uicollectionview

5
推荐指数
1
解决办法
3111
查看次数

Xcode - 使用相对路径而不是框架搜索路径的直接路径

当我在Xcode(5)中添加一个框架时,它会创建一个路径的野兽:

/Users/me/MyApp\ Subfolder1\ Subfolder2/MyApp\ Subfolder1\ Subfolder2/libraries/third-party-lib-2.0
Run Code Online (Sandbox Code Playgroud)

如何将此直接路径转换为相对路径,以便在项目打开的任何位置都能正常工作?

xcode path ios xcode5

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