Почему UIButton перемещает заголовок полностью вправо, когда я устанавливаю вставки содержимого, чтобы переместить его вниз?
Я пытаюсь сделать UIButton с изображением над текстом. Для этого я попытался установить боковые вставки кнопки следующим образом:
[button setImageEdgeInsets:UIEdgeInsetsMake(0.0f, 0.0f, 10, 0.0f)];
[button setTitleEdgeInsets:UIEdgeInsetsMake(10, 0.0, 0.0, 0.0)];
То, что я получаю, это кнопка, где изображение находится в одном и том же месте, а текст сплющен полностью в сторону, на расстоянии около одного символа в ширину.
Как я могу просто установить вставки, чтобы у меня было изображение над текстом? Это действительно так много, чтобы спросить?
1 ответ
Решение
Вы просто неправильно рассчитали edgeInSets. Они не там, как вы думаете. Вот мой тестовый код. Мне понадобилось время, чтобы поместить изображение и заголовок в нужное место.
UIButton *tmp_testBtn = [[UIButton alloc] initWithFrame:CGRectMake(50, 200, 60, 40)];
tmp_testBtn.backgroundColor = [UIColor grayColor];
[tmp_testBtn setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 20, 0)];
[tmp_testBtn setImage:[UIImage imageNamed:@"France"] forState:UIControlStateNormal];
[tmp_testBtn setTitleEdgeInsets:UIEdgeInsetsMake(20, -258, 0, 0)];
[tmp_testBtn setTitle:@"testbutton" forState:UIControlStateNormal];
CGRect contentRect = [tmp_testBtn contentRectForBounds:tmp_testBtn.bounds];
NSLog(@"contenRect:%f,%f,%f,%f",contentRect.origin.x,contentRect.origin.y,contentRect.size.width,contentRect.size.height);
CGRect titleRect = [tmp_testBtn titleRectForContentRect:contentRect];
NSLog(@"titleRect:%f,%f,%f,%f",titleRect.origin.x,titleRect.origin.y,titleRect.size.width,titleRect.size.height);
CGRect imageRect = [tmp_testBtn imageRectForContentRect:contentRect];
NSLog(@"imageRect:%f,%f,%f,%f",imageRect.origin.x,imageRect.origin.y,imageRect.size.width,imageRect.size.height);
[self.view addSubview:tmp_testBtn];
[tmp_testBtn release];
Кстати, я не буду так поступать. Я предпочитаю настраивать кнопку с добавлением UIImageView и UILabel.