2016-04-06 2 views
0

создать кнопку пользовательские панели, используяIOS - сделать UIImage взять тот же размер, как UIButton

+ (UIBarButtonItem *)barBtnItem:(id)target action:(SEL)action imageName:(NSString *)imageName frame:(CGRect)frame 
{ 
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [btn setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal]; 
    [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; 
    [btn setFrame:frame]; 
    UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithCustomView:btn]; 
    return barBtn; 
} 

рама имеет размер

CGRectMake(0, 0, 22, 22) 

Однако, я думаю, что в связи с соотношением сторон, мое изображение становится меньше, но правильно центрируется в UIButton

Однако я хочу, чтобы изображение было того же размера, что и UIButton.

Могу ли я это сделать?

Я использовал XCode 7 и попробовал его функцию резки. Но я не мог заставить его работать.

Если бы я мог сделать это с помощью кода?

Я также посмотрел на UIEdgeinsets, но я не совсем понимаю понятия cap/insets.

+0

Оба ответа были верны. Однако значения для вложений должны быть отрицательными для расширения изображения. 0 не работает, поскольку ничего не делает. Если я установил значение вставки -5, я получил желаемое поведение. – GJain

+0

если вы не возражаете, установите его как фоновое изображение, вы можете попробовать это https://github.com/AlexHsieh/ButtonAppearance – AlexHsieh

ответ

1

Установите режим содержимого кнопки на UIViewContentModeScaleToFill.

btn.imageView.contentMode = UIViewContentModeScaleToFill 
btn.imageView.frame = btn.bounds 
+0

Я сделал настройку. – Jelly

+0

все еще не работал – GJain

1

проверка после записи ниже код:

btn.contentMode= UIViewContentModeScaleToFill; 
btn.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0); 
btn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0); 

До сих пор не работает, то попробуйте ниже строки кода. Установите фоновое изображение UIButton вместо изображения.

+ (UIBarButtonItem *)barBtnItem:(id)target action:(SEL)action imageName:(NSString *)imageName frame:(CGRect)frame 
{ 

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
[btn setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal]; 
[btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; 
[btn setFrame:frame]; 
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithCustomView:btn]; 
return barBtn; 
} 

если не работает использовать ниже строки кода:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:imageName] style:UIBarButtonItemStylePlain target:self action:@selector(handleBack:)]; 
+0

Я просто отредактировал свой ответ. Check –

+0

все еще не работал для меня. – GJain

+0

Отредактирован мой ответ 'UIBarButtonItem * backButton = [[UIBarButtonItem alloc] initWithImage: [UIImage imageNamed: imageName] style: UIBarButtonItemStylePlain target: self action: @selector (handleBack :)];'. Проверьте это –

0

вы можете сделать это через авторазметках !!! set image Ограничения сверху, снизу, слева, справа равны Button !!

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