Пытаюсь переместить мою настраиваемую кнопку очистки UITextField, но она не размер и не перемещается правильно

Итак, у меня есть настраиваемый clearButton для моего универсального UITextField. Я пытаюсь переместить clearButton, поскольку фон моего uitextfield имеет некоторые элементы дизайна с правой стороны. Мне нужно, чтобы кнопка очистки была продвинута примерно на 150 пикселей.

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

1-я попытка

UIButton *clearBtn = [UIButton buttonWithType:UIButtonTypeCustom];

CGRect rect;
UIEdgeInsets contentInsets;
CGRect result;
[clearBtn setImage:[UIImage imageNamed:@"design.png"] forState:UIControlStateNormal];
rect = CGRectMake(0, 0, 45, 45);
contentInsets = UIEdgeInsetsMake(0, 50, 0, 0);
result = UIEdgeInsetsInsetRect(rect, contentInsets);
[clearBtn setFrame:result];

2-я попытка

UIButton *clearBtn = [UIButton buttonWithType:UIButtonTypeCustom];

CGRect rect;
UIEdgeInsets contentInsets;
CGRect result;
[clearBtn setImage:[UIImage imageNamed:@"design.png"] forState:UIControlStateNormal];
rect = CGRectMake(0, 0, 45, 45);
contentInsets = UIEdgeInsetsMake(0, 250, 0, 150);
result = UIEdgeInsetsInsetRect(rect, contentInsets);
[clearBtn setFrame:result];

person jdog    schedule 04.08.2014    source источник


Ответы (1)


Лучше всего создать подкласс UITextField и переопределить метод clearButtonRectForBounds:.

- (CGRect)clearButtonRectForBounds:(CGRect)bounds {
    CGRect rect = [super clearButtonRectForBounds:bounds];
    rect.origin.x -= 150;

    return rect;
}

Это переместит кнопку очистки на 150 пунктов влево от ее нормального положения.

person rmaddy    schedule 04.08.2014