标签: cgfloat

二进制运算符'+'不能应用于两个CGFloat操作数?

在Swift编码并得到上述错误......

消息掩盖其他东西还是你真的不能添加两个CGFloat操作数?如果没有,为什么(在地球上)不?

编辑

我正在尝试的代码没有什么特别之处; 有趣的是,上面的错误消息VERBATIM是Swift助手编译器告诉我的内容(用红色波浪线强调我的代码).

运行Xcode 6.3(Swift 1.2)

cocoa cgfloat swift

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

如何将CGFloat设置为UILabel的文本属性

我有一个UILabel名为optionsDisplayerBrushSizeLabelwho的文本属性我想设置为CGFloat:brushSizeVal.我知道text属性需要是一个字符串,但我不知道如何将CGFloat转换为NSString.

iphone text properties nsstring cgfloat

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

如何围绕CGFloat

我做了这个方法

+ (CGFloat) round: (CGFloat)f {
    int a = f;
    CGFloat b = a;
    return b;
}
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但它只是向下舍入.如果它是一个负数,它仍然会向下舍入.

这只是我制作的一个快速方法,它正确地舍入并不是非常重要,我只是为了使我的游戏围绕相机的x和y值.

这个方法好吗?它快吗?或者有更好的解决方案吗?

math objective-c cgfloat ios

18
推荐指数
3
解决办法
3万
查看次数

如何在Swift中使用CGFloat?

var posinonY:Float = Float(y) + Float(pipeDown.size.height) + Float(verticalPipeGap)
pipeDown.position = CGPointMake(0.0, Float(posinonY))
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

"NSNumber"不是'CGFloat'的子类型"

为什么?


编辑:

CGFLoat需要双重类型

pipeDown.position = CGPointMake(0.0,  Double(posinonY))
Run Code Online (Sandbox Code Playgroud)

还行吧.

cgfloat swift

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

如何在目标c中创建一系列CGFloats?

所以我正在开发一款简单的iPhone游戏,并试图制作一张本地高分榜.我想制作一个数组并将最高分数推入其中.以下是我到目前为止的代码:

    CGFloat score;
    score=delegate.score;
    NSInteger currentindex=0;
    for (CGFloat *oldscore in highscores)
    {
        if (score>oldscore)
        {
            [highscores insertObject:score atIndex:currentindex]
            if ([highscores count]>10)
            {
                [highscores removeLastObject];  

            }

        }
        currentindex+=1;
    }
Run Code Online (Sandbox Code Playgroud)

问题是highscores是一个NSMutableArray,它只能存储对象.所以这是我的问题,在阵列中存储CGFloats的最佳方法是什么?它们是支持CGFloats的不同类型的数组吗?将CGFloat变成对象是一种简单的方法吗?

并且请不要评论我在应用代表中存储分数这一事实,我知道这是一个坏主意,但我现在没心情必须制作一个单独的应用程序差不多完成了.

arrays iphone objective-c cgfloat

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

Swift二元运算符'+'不能应用于两个CGFloat操作数

我在Swift中编写一个函数来检测我点击的六边形.但是我遇到了一个特殊的错误消息,指出我不能添加两个CGFloats.无论我做了,例如改变let到var,申报并分别分配,没有工作.我想一定有别的错误,但我找不到.代码如下:

func pointToCoordinate(position: CGPoint) -> (Int, Int) {
        var gridHeight = 2 * singleRadius / sqrt(CGFloat(3)) * 1.5
        var gridWidth = 2 * singleRadius
        var halfWidth = singleRadius

        var relativePosition = CGPoint(x: position.x - totalRadius / 2, y: position.y - totalRadius / 2)
        println((relativePosition.y / gridHeight))
        var row = -(cgfloatToInt)(relativePosition.y / gridHeight)
        var column: Int

        println((relativePosition.x + halfWidth * CGFloat(row + 1)) / (gridWidth))
        column = cgfloatToInt((relativePosition.x + halfWidth * CGFloat(row + 1)) / (gridWidth))

// …
Run Code Online (Sandbox Code Playgroud)

types cgfloat swift

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

const是在CGFloat之前还是之后?

它甚至重要吗?Const之前还是const之后?我猜测我是const在CGFloat它之前还是之后使它的值CGFloat变为常量,但指针呢?这是否适合Objective-C:

// Example.h

extern CGFloat const kPasscodeInputBoxWidth;


// Example.m

CGFloat const kPasscodeInputBoxWidth = 61.0f;
Run Code Online (Sandbox Code Playgroud)

c floating-point const objective-c cgfloat

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

整数除法后浮点数为0

这可能是一个简单的解决方案,但我无法解决它.

我正在划分2个整数:

finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
Run Code Online (Sandbox Code Playgroud)

日志返回 0.000000

小数位有限制吗?我需要保留小数结果.

谢谢Shani

objective-c cgfloat ios

14
推荐指数
3
解决办法
9509
查看次数

CGFloat:圆形,底部,abs和32/64位精度

TLDR:如何在没有警告的情况下编译32位和64位CGFloats的方式调用标准浮点代码?


CGFloat定义为double或float,具体取决于编译器设置和平台.我正在尝试编写在两种情况下都能正常工作的代码,而不会产生很多警告.

当我使用floor,abs,ceil和其他简单浮点运算之类的函数时,我会收到关于值被截断的警告.例如:

警告:隐式转换将64位值缩短为32位值

我不关心计算的正确性或精度损失,因为我意识到我可以一直使用所有函数的双精度版本(floor而不是floorf等); 但是,我必须容忍这些错误.

有没有办法干净地编写支持32位和64位浮点数的代码,而不必使用大量的#ifdef __ LP64 __,或者为所有标准浮点函数编写包装函数?

objective-c cgfloat

11
推荐指数
1
解决办法
8176
查看次数

替换`fabs`,`fmax`等,以便在64位iOS设备上与CGFloat一起使用

题

考虑这样的布局代码:

CGFloat descriptionHeight = // height of a paragraph of text with zero or more words;
CGFloat imageHeight = // height of an image;
CGFloat yCoordinateOfSomeOtherView = fmax(descriptionHeight, imageHeight) + 5.0f;
Run Code Online (Sandbox Code Playgroud)

如何通过支持64位iOS设备来重写第三行?

(当前代码不考虑yCoordinateOfSomeOtherView是a float还是a double.)

选项

一些选项(我不确定哪个是最好的):

1.定义我自己的宏

#if defined(__LP64__) && __LP64__
#define cgfmax(x,y) fmaxf(x,y)
#else
#define cgfmax(x,y) fmax(x,y)
#endif
Run Code Online (Sandbox Code Playgroud)

然后我可以代替fmax使用cgfmax.

2.使用 tgmath.h

2011年的Stack Overflow回答建议替换math.h为tgmath.h.这取代了fmax一个调用__typeof__每个参数并返回fmax或者fmaxf根据参数类型返回的实现.

3.忽略此问题

由于CGFloats与布局有关,因此将a存储 …

cocoa-touch objective-c cgfloat ios

11
推荐指数
1
解决办法
2306
查看次数