标签: cgfloat

CGFloat显示错误

我在头文件中声明了一个CGFloat变量:

@property (nonatomic)CGFloat *heightOfSection;
Run Code Online (Sandbox Code Playgroud)

在我的实现文件上合成它,但它给我一个错误,试图为它分配一个值:

// Set height of section
            heightOfSection = 45.0f;
Run Code Online (Sandbox Code Playgroud)

这是显示的错误:

Assigning to 'CGFloat *' (aka 'float *') from incompatible type 'float'
Run Code Online (Sandbox Code Playgroud)

有什么想法来解决这个问题吗?

objective-c cgfloat

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

在arm64上使用NSScanner处理CGFloat

显然CGFloatdouble在arm64上:

#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
#else
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
#endif
Run Code Online (Sandbox Code Playgroud)

所以代码

NSScanner *scanner = [NSScanner scannerWithString:string];
CGFloat c[components];
[scanner scanFloat:&c[i]]
Run Code Online (Sandbox Code Playgroud)

这对于32位应用程序来说效果很好,但是对于64位应用程序来说是破碎的.它可以替换为

NSScanner *scanner = [NSScanner scannerWithString:string];
CGFloat c[components];
#if CGFLOAT_IS_DOUBLE 
   [scanner scanDouble:&c[i]]; 
#else 
   [scanner scanFloat:&c[i]]; 
#endif
Run Code Online (Sandbox Code Playgroud)

但是有更好的选择吗?

double cocoa-touch cgfloat nsscanner arm64

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

Swift - 找不到重载...&无法转换表达式的类型

我正在适应Swift一种我在互联网上找到的ObjectiveC方法(可能在这里,我记不起来了)当我为iPad Air构建它时,它运行得很完美,但当我尝试在iPad 2或iPad上运行时Retina它给出4个错误(2个不同的错误,每个错误两次):

/* Scale and crop image */
func imageByScalingAndCroppingForSize(#originalImage: UIImage, size:CGSize) -> UIImage {
    let sourceImage = originalImage
    var newImage: UIImage
    let imageSize: CGSize = sourceImage.size
    let width: Double = Double(imageSize.width)
    let height: Double = Double(imageSize.height)
    var targetWidth: Double = Double(size.width)
    var targetHeight: Double = Double(size.height)
    var scaleFactor: Double = 0.0
    var scaledWidth: Double = targetWidth
    var scaledHeight: Double = targetHeight
    var thumbnailPoint: CGPoint = CGPointMake(0.0, 0.0)

    if (imageSize != size) {
        let widthFactor: Double = Double(targetWidth / …
Run Code Online (Sandbox Code Playgroud)

overloading cgfloat ios swift

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

在swift中使用CGFloats进行数学运算的最佳方法是什么?

我尝试在swift中做一些简单的UIView布局数学,并尝试了以下代码行...

var offset: CGFloat = (bounds.width / 2.0) - ((sortedSymptoms.count * bounds.height) / 2.0)
Run Code Online (Sandbox Code Playgroud)

并从编译器得到以下错误:

cannot invoke '-' with an argument list of type '(($T6), ($T17))'
        var offset: CGFloat = (bounds.width / 2.0) - ((sortedSymptoms.count * bounds.height) / 2.0)
                              ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Run Code Online (Sandbox Code Playgroud)

编译器错误并没有那么有用,但看起来在某种类型的Double,Int和CGFloat之间存在类型冲突.我能够通过在CGFloats的一些明确创作中进行编译来获得编译,但我无法相信这是正确的方法.

var offset: CGFloat = (bounds.width / CGFloat(2.0)) - ((CGFloat(sortedSymptoms.count) * bounds.height) / CGFloat(2.0))
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法?

math core-graphics uikit cgfloat swift

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

使用CGFloat而不是浮动?他们不这样做

[我可能误解了整个主题,因为我已经成长为语言,允许开发人员几乎完全忽略处理器架构,如Java,除了在某些特定情况下.如果我有一些错误的概念,请纠正我.]

在这里阅读似乎建议使用CGFloat代替浮点数,因为它可以为我的代码提供面向未来的不同处理器体系结构(64位句柄浮动不同).假设这是正确的,那么为什么UISlider,例如,float直接使用(对于值)?对我来说,阅读它们float并将其转换为a CGFloat是不是错(或其他),因为无论如何,如果架构发生变化,我的代码是不正确的?

objective-c cgfloat

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

CGFloat添加错误?

我试图在我的程序中递归添加一些CGFloat值.我刚刚在一个特定场景中意识到生成的总数是不正确的.为了确保我的程序逻辑没有任何问题,我创建了一个简单的场景示例(见下文),并打印出相同的错误值.

CGFloat arr[3] = {34484000,512085280,143011440};
CGFloat sum = 0.0;
sum = arr[0] + arr[1] + arr[2];

NSLog(@"%f",sum);

int arr1[3] = {34484000,512085280,143011440};
int sum1 = 0.0;
sum1 =  arr1[0] + arr1[1] + arr1[2];

NSLog(@"%d",sum1);
Run Code Online (Sandbox Code Playgroud)

第一个NSLog打印689580736.000000 ...而正确的结果689580720.但是第二个NSLog打印正确的结果.我不确定这是一个错误还是我做错了什么.

谢谢,穆拉利

objective-c cgfloat ios xcode4

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

在不同的部分设置不同的行高(故事板)

我有一个桌面视图,我在故事板中设计了多个原型单元格,但我遇到了高度问题,因为我的第一个单元格与第二个单元格不同,依此类推...我对每个单元格都有不同的标识符,因为我在故事板中设计它们,我知道它们的高度.我在我的代码中有这个,但它不起作用,有谁知道如何解决它?:

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

UITableViewCell *cell = [[UITableViewCell alloc]init];
switch (indexPath.section) 

{
    case 1:

        cell = [tableView dequeueReusableCellWithIdentifier:@"cell1"];
        return 743.0f; 

        break;

    case 2:

        cell = [tableView dequeueReusableCellWithIdentifier:@"cell2"];
        return 300.0f;



}
Run Code Online (Sandbox Code Playgroud)

}

谢谢你的时间.

height uitableview cgfloat

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

对于CGFloat,Swift相当于ceilf

我试图做这样的事情

var myCGFloat: CGFloat = 3.001
ceilf(myCGFloat)
Run Code Online (Sandbox Code Playgroud)

ceilfFloat取值.在搜索时,有很多关于进行此转换的不同答案,或者取决于它是32位还是64位架构.

事实证明解决方案相当容易,但我花了太长时间才找到它.所以我写这个Q&A对作为其他人的捷径.

cgfloat ceil swift

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

比较两个相等的CGFloat:s,得到正(YES)结果

到目前为止,这不是一个问题,但从今天开始我遇到了一个不会一直发生的奇怪问题,但很少,我会说50次中有一次,甚至更少.

我正在比较两个CGFloat:s是这样的:

const CGFloat MYFIRSTFLOAT = /* get the first value */
const CGFloat THESECONDFLOAT = /* get the second value */
if (MYFIRSTFLOAT < THESECONDFLOAT) {
// do something
}
else {
// Do something else
}
Run Code Online (Sandbox Code Playgroud)

你可以看到我没有比较使用==或任何东西,因为它们是浮点数...(比如,它应该与比较浮点值的危险程度无关现在应该如此)

而我遇到的问题是我遇到两个值完全匹配的情况,但比较评估为YES.在我的情况下,两个值都是"8926.5" - 这是我从LLDB获得的值.有没有一个很好的解释??? (我认为LLDB对这两个值进行四舍五入,这意味着它们可能真的是其他值 - 但为什么这也会在运行时发生呢?)

这种让我失望的原因我不能只看到问题......好吧,我正在考虑强制浮点数只用于这个比较,这次我可能没问题,但我觉得这个问题最好完全理解:-P

cgfloat ios

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

快速转换,CGFloat转换为整数

如何将@IValue CGFloat转换为Int?

我不断得到cannot convert @IValue CGFloat to Integer以下:

@IBOutlet var userObject : UIImageView


func returnYPosition(yPosition: Integer) -> Integer {
    return userObject.center.y
}
Run Code Online (Sandbox Code Playgroud)

xcode integer cgfloat ios swift

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