小编geb*_*bel的帖子

IBOutletCollection在Interface Builder中设置排序

我正在使用IBOutletCollections来分组几个类似UI元素的实例.特别是我将一些UIButton(类似于测验游戏中的蜂鸣器)和一组UILabels(显示分数)组合在一起.我想确保按钮上方的标签更新分数.我认为通过索引访问它们是最容易的.不幸的是,即使我以相同的顺序添加它们,它们并不总是具有相同的索引.Interface Builder中是否有一种方法可以设置正确的顺序.

xcode objective-c interface-builder iboutlet ios

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

Objective-C类别和新的iVar

我尝试扩展cocos2d的SimpleAudioEngine的功能,能够一个接一个地播放几种音效作为某种链.我尝试使用扩展程序执行此操作.但是我现在意识到我可能还需要一个iVar来记住所有声音文件的名称,还有一个要记住当前播放的声音.

但似乎我无法在类别中添加iVars.相反,我尝试使用扩展,但似乎它们需要在类的原始.m文件中,这样也无法工作.还有另一种方式,允许我这样做吗?

带有类别的标题

#import <Foundation/Foundation.h>
@interface SimpleAudioEngine(SoundChainHelper)<CDLongAudioSourceDelegate>
-(void)playSoundChainWithFileNames:(NSString*) filename, ...;
@end
Run Code Online (Sandbox Code Playgroud)

和.m文件扩展名为:

#import "SoundChainHelper.h"

@interface SimpleAudioEngine() {
    NSMutableArray* soundsInChain;
    int currentSound;
}
@end

@implementation SimpleAudioEngine(SoundChainHelper)

// read in all filenames and start off playing process
-(void)playSoundChainWithFileNames:(NSString*) filename, ... {
    soundsInChain = [[NSMutableArray alloc] initWithCapacity:5];

    va_list params;
    va_start(params,filename);

    while (filename) {
        [soundsInChain addObject:filename];
        filename = va_arg(params, NSString*);
    }
    va_end(params);
    currentSound = 0;
    [self cdAudioSourceDidFinishPlaying:nil];
}

// play first file, this will also always automatically be called as soon as the previous …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c cocos2d-iphone ios

9
推荐指数
1
解决办法
5443
查看次数

动画滞后于设备,但不在模拟器中

我想用Button 触发CAAnimation.在游乐场和模拟器中,这完全符合我的要求.但是,当我在设备上运行相同的代码时,动画仅在短暂延迟后发生.

显然,这个问题只发生在iOS 11.2.6上.我更新了我的设备,现在无法重现该问题.任何人都可以确认或了解它如何在iOS 11.2.6上运行?

import UIKit

class MyViewController : UIViewController {
    let animatedView = UIView()

    override func loadView() {
        let view = UIView()
        view.backgroundColor = .white

        // Add a button
        let button = UIButton(type: .system)
        button.frame = CGRect(x: 150, y: 200, width: 200, height: 50)
        button.setTitle("Animate", for: .normal)
        button.addTarget(self, action: #selector(tap), for: .touchUpInside)

        // Set color and frame of the view, that is animated.
        animatedView.backgroundColor = UIColor.blue
        animatedView.frame = CGRect(x: 50, y: 50, width: 50, height: 50) …
Run Code Online (Sandbox Code Playgroud)

core-animation swift

9
推荐指数
1
解决办法
219
查看次数

SKLabelNode删除前导和尾随空格 - 我该如何阻止它?

我想创建一个SKLabelNode,它应该总是具有相同的长度(对于单词猜谜游戏).不幸的是,SKLabelNode决定始终切断任何前导和尾随空格.文档中未描述此行为.如何避免/关闭该行为?

ios sprite-kit sklabelnode

7
推荐指数
1
解决办法
317
查看次数

检测SimpleAudioEngine中当前是否正在播放声音效果

我想检测[SimpleAudioEngine sharedEngine]当前是否正在播放任何效果.对于背景音乐,有一种方法可以为您提供背景音乐是​​否正在播放的信息:

[[SimpleAudioEngine sharedEngine] isBackgroundMusicPlaying];
Run Code Online (Sandbox Code Playgroud)

音效有类似之处吗?如果不是,我怎么能检测到我是否已经在效果?

objective-c cocos2d-iphone simpleaudioengine

6
推荐指数
1
解决办法
2590
查看次数

属于特定用户的资源的 REST URI 设计

假设我想创建一个非常简单的 todolist RESTful API,其中每个用户都拥有一个 todos 列表。用户已通过 http BASIC 或 DIGEST 进行身份验证。

在这一点上,我不确定 URL 方案应该是什么样子。可不可能是:

http://servername/todos/
Run Code Online (Sandbox Code Playgroud)

我的服务器根据 http 标头给我的身份验证过滤适当的待办事项。

或者我应该在 URI 中包含用户名:

http://servername/users/username/todos/
Run Code Online (Sandbox Code Playgroud)

在一些网站上,我什至看到他们将用户名作为这样的参数传递:

http://servername/todos?username=babsi
Run Code Online (Sandbox Code Playgroud)

据我所知,所有三个选项都是无状态的,因为我总是收到用户名,但只是来自不同的来源。据我所知,为了确保正确的用户访问了 URI,我总是需要检查 http 标头。那么,您认为 REST 中最好的 URI 设计是哪一种,还是我应该以完全不同的方式来做?

rest

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

似乎没有定义CALayer

我想在UITextView中添加圆角矩形,如何如何将UITextview设置为像Rounded Rect文本字段一样?.但是,当我这样做时,我收到一条错误消息,指出找不到那里使用的方法.我认为这很奇怪,因为它们仍然在文档中.另一方面,XCode在字段图层上没有显示自动填充中的任何内容.这个字段是以某种方式被弃用还是可能出现问题?

这里是我使用的两个代码片段:

@interface AddItemViewController : UIViewController {    
    IBOutlet UITextView *detailsTextView;
}
@end
Run Code Online (Sandbox Code Playgroud)

Hier将ich dann死于Eigenschaften aendern.

    - (void)viewDidLoad
{
    [super viewDidLoad];
    // add rounded rects to detailsTextView
    //first leads to warning that method is unknown
    [detailsTextView.layer setCornerRadius:8.0f];
    // displays error that property is not found on object of type CALayer *
    textView.layer.cornerRadius = 8.0f;
    detailsTextView.clipsToBounds = YES;
}
Run Code Online (Sandbox Code Playgroud)

iphone objective-c calayer quartz-core

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

Android.mk中的预处理器宏被忽略,但在Application.mk中有效

我使用jni创建了一个Android项目.现在我想使用预处理器宏来区分lite和完整版本.它应该如下所示:

#ifdef LITE
    auto label = LabelTTF::create("Hello Cocos2dx Lite", "Arial", 24);
#else
    auto label = LabelTTF::create("Hello Cocos2dx Full", "Arial", 24);
#endif
Run Code Online (Sandbox Code Playgroud)

为此,我在Android.mk中的APP_CPPFLAGS中定义了一个变量,如下所示:

APP_CPPFLAGS += -DLITE
Run Code Online (Sandbox Code Playgroud)

不幸的是,应用程序完全忽略它,我仍然看到标签"Hello Cocos2dx Full".但是,当我将它放在Application.mk中时,同一行也可以工作.

  • 这是为什么?
  • 如何定义变量,以便我可以为完整版和精简版提供两个不同的makefile?

java-native-interface android preprocessor makefile android-ndk

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