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

时间:2014-08-03 09:29:15

标签: ios

存在预期标识符的问题。我想在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];

2 个答案:

答案 0 :(得分:0)

您没有为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);

希望这会有所帮助

答案 1 :(得分:-3)

这条线对我来说很奇怪:

[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);
}

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

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