2015-08-05 2 views
-1

Есть ли какое-либо ограничение количества слов, которые могут быть смещены на UILabel. Что я пытаюсь сделать, это назначить почти 10 000 + символов Label lblUsername, которое отображает текст на ярлыке если ее меньше, то есть почти 1000 + символов, но ничего не отображается, когда она идет почти 10000 characters.Here моя цель-с-кодUILabel Не отображает ничего в Objective-C

UILabel *lblUsername=[[UILabel alloc] initWithFrame:CGRectMake(100,100,100,20)]; 
     lblUsername.numberOfLines = 0; 
     [email protected]"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]; 
+0

Вы добавили к этому виду? [self.view addSubview: lblUsername]; – Greg

+0

@Greg, я думаю, он сделал это потому, что говорит, что UILabel действительно отображает текст, когда он короче 1000 символов. –

+1

Кто не использует UITextView вместо UILabel? – iamIcarus

ответ

2

Ваш кадр слишком мал, чтобы его показать (sizeToFit дополнительно уменьшается Это). Это работает образец кода:

Я только добавил свойство:

@property (nonatomic) UILabel *lblUsername; 

Затем я установил Eveything, связанный с представлением:

_lblUsername=[[UILabel alloc] initWithFrame:CGRectZero]; 
_lblUsername.numberOfLines = 0; 
[email protected]"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 и viewDidLayoutSubviews. Вы должны создать отдельный вид, назначить его как self.view, создать этот ярлык и другие вещи на вашем видном методе и разместить все в layoutSubviews методе.

+0

вы должны всегда вводить слабые свойства вида, так как они принадлежат супервизу. – vikingosegundo

+0

@vikingosegundo Зависит, если вы сначала добавите их в супервизор. Я пришел с этим решением, так как быстрее объяснять, как работают рамы, и это был вопрос адеектов. Мое решение не будет создавать утечек памяти и не будет сохранять циклы. Ofc в этом случае может быть слабым, но тогда вам придется сначала создать ivar и назначить его для свойства после добавления к просмотру - я думаю, что это слишком много объяснений для 1 сообщения, особенно это не так.Также я чувствую ваш ответ так же, как и мой (ранее), P, особенно с почти тем же кодом, что и мой ответ ... – Vive

+0

Я не говорю, что вам нужно все объяснить. но если мы предоставляем код, мы должны сделать это без ошибок. ваш код приведет к утечкам. для вашего обвинения в плагиате см. комментарий, который я оставил под вашим ответом. – vikingosegundo

2

В инспекторе просмотра иерархии вы можете видеть, что на самом деле текст отображается, но в начале метки это лишнее пространство.

enter image description here


rmaddy право в своем комментарии (и я чувствую себя глупо, что не видели его раньше): как шрифт и его размер имеет влияние на сколько размера а текст потребность, у вас есть называть его после настройки всего. так просто:

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UILabel *lblUsername=[[UILabel alloc] initWithFrame:CGRectMake(100,100,100,20)]; 
    lblUsername.numberOfLines = 0; 
    [email protected]"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 
+0

Вы должны сделать свой ярлык 'nonatomic', так как по умолчанию это' atom'. В этом случае не требуется более медленная «атомная» опция (как в большинстве, особенно в случаях с подключением к пользовательскому интерфейсу). Также почему вы называете 'sizeToFit' в' viewDidLoad'? Он избыточен в этом коде. ** Я все еще нахожу ваш отредактированный ответ очень (!) Похожим в коде на мой (ранее) ответ - грустный (особенно раньше у вас не было кода). ** – Vive

+0

Моя первая версия уже содержит первый скриншот. Вы делаете это в Photoshop? конечно, я использовал код в первую очередь. также layoutSubview не является действительно секретным методом. также нет функций CoreGraphics. Вы полностью меняете рамку, а я меняю ее только по высоте. Я не мог украсть у вас много. – vikingosegundo

+0

Я не утверждаю, что вы что-то украли. Я просто утверждаю, что вы дублировали почти тот же ответ, что и мой. У меня нет ничего против вашего первого снимка экрана, поскольку он добавил к обсуждению. Последний код + - дублирование моего ответа. – Vive

Смежные вопросы