如何相对于ios中的图像动态更改UIButton的宽度和高度?
[[btn_dynamic imageView] setContentMode: UIViewContentModeScaleToFill];
// btn_dynamic.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
// btn_dynamic.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
//[btn_dynamic setContentMode:UIViewContentModeScaleAspectFit];
我在这些区域尝试但没有工作
答案 0 :(得分:2)
//Get the size of image
UIImage *buttonImage = [UIImage imageNamed:@"btnImage"];
CGSize buttonSize = CGSizeMake(buttonImage.size.width, buttonImage.size.height);
buttonInstance = [UIButton buttonWithType:UIButtonTypeCustom];
[buttonInstance setImage:buttonImage forState:UIControlStateNormal];
//Set the frame of button using image size
[buttonInstance setFrame:CGRectMake(0, 0, buttonSize.width, buttonSize.height)];
答案 1 :(得分:0)
您需要创建自定义按钮,如下所示
UIButton *btnDynamic = [UIButton buttonWithType:UIButtonTypeCustom];
[btnDynamic setImage:[UIImage imageNamed:@"image_Name"] forState:UIControlStateNormal];
它只是根据图像创建自定义按钮..
希望它有所帮助......!
答案 2 :(得分:0)
如果您不想触摸按钮框并想要设置看起来不那么有弹性的图像。请使用下面的代码
btn_dynamic.imageView.contentMode = UIViewContentModeScaleAspectFit;
如果要设置按钮宽度和高度,则需要根据图像大小设置按钮大小。
UIImage *image = [UIImage imageNamed:@"image.jpg"];
CGRect btnFrame = btn_dynamic.frame;
btnFrame.size.width = image.size.width;
btnFrame.size.height = image.size.height;
[btn_dynamic setFrame:btnFrame];
如果您想保持比率,因为图像可能比视图大
UIImage *image = [UIImage imageNamed:@"image.jpg"];
CGRect btnFrame = btn_dynamic.frame;
btnFrame.size.width = 100; // lets the button width is 100 or set according to the need.
btnFrame.size.height = (btnFrame.size.width*image.size.height)/image.size.width;
[btn_dynamic setFrame:btnFrame];
答案 3 :(得分:0)
您可以使用以下内容更改按钮大小。
CGSize imageSize = image.size;
CGRect rectButton = button.frame;
rectButton.size = imageSize
button.frame = rectButton
答案 4 :(得分:0)
试试此代码
float x=0;
for(int i = 100; i < 110; i++)
{
btn = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
UIImage * img = [UIImage imageNamed:@"Round_Rect4.png"];
[btn setBackgroundImage:img forState:UIControlStateSelected];
titleString = [titleArray objectAtIndex:i-100]; // get button title
CGSize fontSize = [titleString sizeWithFont:[UIFont systemFontOfSize:12.0]];
CGRect currentFrame = btn.frame;
CGRect buttonFrame = CGRectMake(x, currentFrame.origin.y, fontSize.width + 22.0, fontSize.height + 12.0);
[btn setFrame:buttonFrame];
x = x + fontSize.width + 35.0;
[btn setTitle:titleString forState: UIControlStateNormal];
[btn setTag:i];
[self.view addSubview:btn];
}
答案 5 :(得分:0)
试试这个简单的解决方案
TestButton.titleEdgeInsets = UIEdgeInsetsMake(0, 8, 0, 8);
[TestButton sizeToFit];
float width = TestButton.frame.size.width + 20;
TestButton.frame = CGRectMake(TestButton.frame.origin.x,
TestButton.frame.origin.y, width, 40);
答案 6 :(得分:0)
谁在寻找一个自动布局解决方案,我所做的是我保持温度,文本颜色清晰的颜色,在uibutton的底部,并将自动布局设置为, 1. uibutton left = tmp uilabel left 2. uibutton right = tmp uilabel right
因此,通过设置tmp标签文本,标签将根据文本自动调整其宽度,因为标签和按钮左右相等,按钮也会自动扩展其宽度。
希望这会有所帮助..