Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在UIButton';s尺码合适/尺码合适?_Ios_Uibutton_Sizetofit - Fatal编程技术网

Ios 如何在UIButton';s尺码合适/尺码合适?

Ios 如何在UIButton';s尺码合适/尺码合适?,ios,uibutton,sizetofit,Ios,Uibutton,Sizetofit,我发现sizeToFit或SizeToFits将更改ui按钮的当前宽度 UIButton* btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(100, 100, 200, 40); btn.backgroundColor = [UIColor redColor]; [btn.titleLabel setText:@"ssdkfjsakdfjsakfjaksdjfkasjfkasjkfasjkfsa

我发现sizeToFit或SizeToFits将更改
ui按钮的当前宽度

UIButton* btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(100, 100, 200, 40);
btn.backgroundColor = [UIColor redColor];
[btn.titleLabel setText:@"ssdkfjsakdfjsakfjaksdjfkasjfkasjkfasjkfsajfkasjkas"];
btn.titleLabel.numberOfLines = 0;
[btn setTitle:@"ssdkfjsakdfjsakfjaksdjfkasjfkasjkfasjkfsajfkasjkas" forState:UIControlStateNormal];
[self.view addSubview:btn];

NSLog(@"before sizeToFit: %@",NSStringFromCGRect(btn.frame));
CGSize size = [btn sizeThatFits:CGSizeMake(200, 1000)];
[btn sizeToFit];

NSLog(@"after sizeToFit:%@",NSStringFromCGRect(btn.frame));
NSLog(@" sizeThatFits:%@",NSStringFromCGSize(size));
输出将是:

before sizeToFit: {{100, 100}, {200, 40}}
after sizeToFit:{{100, 100}, {392, 34}}
sizeThatFits:{392, 34}

这不是我想要的行为,如果我想要sizeToFit根据其原点宽度将按钮框调整到适当的高度。如何做到这一点

如果要更改sizeToFit设置的大小,需要重写SizeToFits方法。创建
UIButton
的子类,如下所示:

斯威夫特: 目标C: 并使用子类按钮而不是UIButton

UIButton* btn = [MyButton buttonWithType:UIButtonTypeCustom];
参考:

@implementation MyButton

- (CGSize)sizeThatFits:(CGSize)size {
    CGSize sizeThatFits = [super sizeThatFits:size];
    return CGSizeMake(sizeThatFits.width, self.frame.size.height);
}

@end
UIButton* btn = [MyButton buttonWithType:UIButtonTypeCustom];