这是我在下面给出的代码。预期标识符的解决方案是啥

Posted

技术标签:

【中文标题】这是我在下面给出的代码。预期标识符的解决方案是啥【英文标题】:this is my code given below. what is the solution of expected identifier这是我在下面给出的代码。预期标识符的解决方案是什么 【发布时间】:2014-08-03 09:29:14 【问题描述】:

存在预期标识符的问题。我想在 Xcode 中编码和获取问题。

UILabel *helloWorldLabel = [UILabel alloc];

if ([helloWorldLabel initWithFrame:[self.view.frame.size.width]] == 320) 
    NSLog(@"ddhsd˙∆˚¬dlkjld");


//UILabel *new=[[UILabel alloc] initWithFrame:CGRectMake(<#CGFloat x#>, <#CGFloat y#>, <#CGFloat width#>, <#CGFloat height#>)];
helloWorldLabel.text = @"My first project";
[helloWorldLabel setText:@"My first project"];
helloWorldLabel.textColor=[UIColor whiteColor];
[helloWorldLabel setBackgroundColor:[UIColor redColor]];
helloWorldLabel.textAlignment = NSTextAlignmentCenter;
helloWorldLabel.font=[UIFont boldSystemFontOfSize:18];
helloWorldLabel.layer.borderColor=[UIColor greenColor].CGColor;
helloWorldLabel.layer.borderWidth = 2.0f;

 [self.view addSubview:helloWorldLabel];

【问题讨论】:

不知道你在问什么! 请先学会正确编码。您的所有代码都完全无效。 *** 不是开始学习的正确地方。一旦您对编程有了基本的了解,并被困在特定的、非平凡的问题上,您就会被邀请在这里提问。 对不起。我不知道这不适合初学者。你能告诉我什么是合适的地方吗? @duci9y 【参考方案1】:

你还没有为 if 语句设置你的文本框架,它为什么存在是我无法理解的。 添加以下代码:

helloWorldLabel.frame = CGRectMake([X position of top-left corner here], [Y position of top-left corner here], [how wide you want the object to be], [how tall you want the object to be];

例如,您想要一个从屏幕左上角开始的 300 x 300 框

helloWorldLabel.frame = CGRectMake( 0, 0, 300, 300);

希望对你有帮助

【讨论】:

【参考方案2】:

这行我觉得很奇怪:

[helloWorldLabel initWithFrame:[self.view.frame.size.width]] == 320

我猜你想要的是:

UILabel * helloWorldLabel = [[UILabel alloc] initWithFrame: self.view.frame];
if (ABS(helloWorldLabel.frame.size.width - 320.0f) < 0.01 )

    NSLog(@"ddhsd˙∆˚¬dlkjld");

如果 helloWorlLabel 是一个 ivar,你可以把 UILabel * 部分去掉,如果它是一个属性,那么你应该调用

self.hellowWorldLabel = ...

如果您仍然不清楚这一切,请阅读如何在 Objective-C 中创建(alloc 和 init)对象,以及 ivars、属性和局部变量之间的区别。

此外,不应该使用 == 比较浮点数,因为它可能会返回 NO,而由于舍入错误而期望 YES。如果你输入:

CGFloat x = 1;
CGFloat y = 1;
if (x == y)

    NSLog(@"Equal");

else

    NSLog(@"Not equal, x = %f and y = %f", x, y);

您可能会看到“不等于...”被打印到控制台。这是由于舍入错误: x 可以是 1.0000000000123 和 y 可能是 1.0000000000012

在那里,你取两个浮点数之间的差值的绝对值,然后检查它是否低于某个阈值。对于 UI/像素相关的东西,通常少 tun 0.01 就足够了,但你的情况可能会有所不同。

【讨论】:

self.view.frame.size.width 将是 CGFloat,不能用作 CGRect。此外,不为其分配内存的初始化和对象将不起作用。这行代码看不懂:if ((helloWorldLabel.frame.size.width - 320.0f) &lt; 0.01 ). 糟糕!你是对的,如果当然。伙计,我在那里做了什么...我猜一些复制粘贴出错了。现在改成正确的了,谢谢。 if ((helloWorldLabel.frame.size.width - 320.0f) &lt; 0.01 ) 这一行呢?为什么要这样写? 我更改了答案以更好地解释这个问题。

以上是关于这是我在下面给出的代码。预期标识符的解决方案是啥的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 查询没有给出正确的答案

c#类型标识符存在,但我仍然收到预期的错误[关闭]

UNIX系统编程中的S_IFMT是啥?

如何在下面给出的Hidekeyboard函数中包含多个UITextField?

PIL Gif 生成未按预期工作

从线程抛出异常并没有给出预期的结果