Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UILabel在Objective-C中不显示任何内容_Ios_Objective C_Cocoa Touch - Fatal编程技术网

Ios UILabel在Objective-C中不显示任何内容

Ios UILabel在Objective-C中不显示任何内容,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,UILabel上可以显示的字数和字符数是否有任何限制。我正在尝试为Label lblUsername分配近10000个字符,如果少于1000个字符,它将显示标签上的文本,但在接近10000个字符时,它不会显示任何内容。这是我的objective-c代码 UILabel *lblUsername=[[UILabel alloc] initWithFrame:CGRectMake(100,100,100,20)]; lblUsername.numberOfLines = 0;

UILabel上可以显示的字数和字符数是否有任何限制。我正在尝试为Label lblUsername分配近10000个字符,如果少于1000个字符,它将显示标签上的文本,但在接近10000个字符时,它不会显示任何内容。这是我的objective-c代码

 UILabel *lblUsername=[[UILabel alloc] initWithFrame:CGRectMake(100,100,100,20)];
        lblUsername.numberOfLines = 0;
       lblUsername.text=@"Username sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfj";
        [lblUsername sizeToFit];
      // lblUsername.tag=i;
       lblUsername.textColor=[UIColor blueColor];
        lblUsername.backgroundColor=[UIColor yellowColor];
       lblUsername.font=[UIFont fontWithName:@"Helvetica" size:12];

您的框架太小,无法显示其大小,因此会进一步减小它。这是您的代码的工作示例:

我刚刚添加了一个属性:

@property (nonatomic) UILabel *lblUsername;
然后我设置了所有与视图相关的内容:

_lblUsername=[[UILabel alloc] initWithFrame:CGRectZero];
_lblUsername.numberOfLines = 0;
_lblUsername.text=@"Username sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjs sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfj jsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjs sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfj";
// lblUsername.tag=i;
_lblUsername.textColor=[UIColor blueColor];
_lblUsername.backgroundColor=[UIColor yellowColor];
_lblUsername.font=[UIFont fontWithName:@"Helvetica" size:12];
[self.view addSubview:_lblUsername];
然后我设置了一个合适的框架,你的框架太小了:

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    [_lblUsername setFrame:CGRectMake(10, 10, CGRectGetWidth(self.view.bounds) - 20, CGRectGetHeight(self.view.bounds) - 20)];
}
一切正常,我可以看到整个文本。长度没有限制,但您可能需要稍后滚动,因为文本对于您的视图来说太长了


您应该比我在这里使用viewDidLoad和ViewDidLayoutSubView的快速示例做得更好。您应该创建单独的视图,将其指定为self.view,在initWithFrame:method中创建标签和视图中的其他内容,并在layoutSubviews方法中布局所有内容。

在视图层次检查器中,您可以看到实际上显示了文本,但标签的开头是额外的空间

rmaddy的评论是对的,我觉得自己很愚蠢,没有早点看到它:因为字体和大小会影响文本需要的大小,所以你必须在设置好所有内容后调用它。因此,只要做:

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    UILabel *lblUsername=[[UILabel alloc] initWithFrame:CGRectMake(100,100,100,20)];
    lblUsername.numberOfLines = 0;
    lblUsername.text=@"Username sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfjUsername sdfsdfsdfsdfsdfdsfsd  sdfsdfsdfsdf sdfsdfsdf sdjkskdfksdfkjsdkjfsdjfksjdkskdjfkdsjfkjsdjfkjjdsfkdskjfjskd sd sdfjsjkjksdkfjksdfjksdfjjsdkfjksdfjksdjfkjsdkfjsdjfkjsdkfj";
    // lblUsername.tag=i;
    lblUsername.textColor=[UIColor blueColor];
    lblUsername.backgroundColor=[UIColor yellowColor];
    lblUsername.font=[UIFont fontWithName:@"Helvetica" size:12];
    [lblUsername sizeToFit];
    [self.view addSubview:lblUsername];
}


@end 

你添加到视图中了吗?[self.view addSubview:lblUsername]@格雷格,我猜他是这样做的,因为他说UILabel在少于1000个字符时会显示文本。你不使用UITextView而不是UILabel吗?用户名为10000个字符-我不会用我的iPhone键盘登录你的服务…调用sizeToFit后标签的框架是什么?这可能是因为有一些限制阻止你的标签变大吗?可能是因为sizeToFit停止在设备帧处吗?:在某些情况下,如果视图没有superview,它可能会根据屏幕边界调整自身大小。因此,如果希望给定视图根据其父视图调整自身大小,则应在调用此方法之前将其添加到父视图中。在UIViewDoc中,您应该始终键入视图弱属性,因为它们属于superview@vikingosegundo取决于您是否首先将它们添加到superview。我提出了这个解决方案,因为它可以更快地解释框架是如何工作的,这就是提问者的问题。我的解决方案不会产生任何内存泄漏,也不会保留周期。Ofc在这种情况下,它可能很弱,但在添加到视图后,您必须首先创建一个ivar并将其分配给属性-我认为这对于一篇文章来说解释太多了,特别是这里没有这个问题。我也觉得你的答案和我之前的答案有点一样;P、 尤其是与我的答案几乎相同的代码…我不是说你需要解释一切。但是如果我们提供代码,我们应该以无bug的方式来做。您的代码将导致泄漏。关于你的剽窃指控,请看我在你的回答下面留下的评论。称sizeToFit不会使标签变小。它调整标签的大小,使其足以容纳文本。但是对sizeToFit的要求应该在设置字体和其他所有东西之后。我的评论不是关于剽窃,而是发布了几乎相同的答案,这是什么感觉。。。关于泄密我已经说过了,没有泄密。保留2个强引用不会泄露。在这种情况下,没有泄漏。正如我在评论中指出的那样,您的代码不是无bug的非原子代码与原子代码,甚至比我的代码还要多,因为您的代码会降低执行速度,而我的代码不会。您应该使标签非原子,因为默认情况下它是原子代码。在这种情况下,不需要像在大多数情况下一样使用较慢的原子选项,尤其是在与UI连接的情况下。还有,为什么在viewDidLoad中调用sizeToFit?在这个代码中是多余的。我仍然觉得你编辑的答案非常好!在代码上与我之前的回答类似-很遗憾,尤其是在你没有代码之前。我的第一个版本已经包含了第一个屏幕截图。你觉得我在photoshop上画的东西怎么样?当然,我首先使用的是代码。此外,layoutSubview并不是真正的秘密方法。CoreGraphics函数也是如此。你完全改变了框架,而我只改变了高度。我从你那里偷的东西不多,我不认为你偷了什么。我只是说你的答案和我的几乎一样。我不反对你的第一个截图,因为它增加了讨论。后一个代码是+ -我的答案的重复。如果你认为2行和一个漏洞,你添加到代码中的问题是如此伟大和新颖的工作,你可以考虑考虑在IEEE提交一份文件。甚至结果也不一样。你制作了一个接近全屏的标签,而我尊重OPs标签的宽度尺寸和原点。泄漏在哪里?您甚至可能持有100个强引用,所有这些都将在视图 将在我显示的代码的情况下解除分配。这是个玩笑,这里没有漏洞。去IEEE,教他们如何思考泄漏问题。我已经告诉了我的意图以及为什么既没有泄漏也没有保留循环,所以我不会继续这个完全疯狂的讨论,除非有人告诉我为什么会有泄漏——如果是的话,我很乐意学习。我没看到有漏洞。尤其是您的代码也缺少一些要点。给我的。