根据文本长度自定义UIButton调整大小,然后放置UILabel

时间:2015-06-11 07:26:34

标签: ios objective-c uibutton sizewithfont

我使用了以下代码并得到了如下错误,即较小的文本空间和较长的空间文本

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 40)];

    UIButton *BtnBreadcrumb = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [BtnBreadcrumb addTarget:self action:@selector(selectBtnBreadcrumb:)
     forControlEvents:UIControlEventTouchUpInside];
    [BtnBreadcrumb setTitle:selectedDepartment forState:UIControlStateNormal];
    BtnBreadcrumb.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    BtnBreadcrumb.tintColor=ThemeColor;
    CGSize stringsize = [selectedDepartment sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0f]}];
    BtnBreadcrumb.frame = CGRectMake(10, 5, stringsize.width, 40);
    [view addSubview:BtnBreadcrumb];

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(stringsize.width, 5, 200, 40)];
    //[label setFont:[UIFont boldSystemFontOfSize:12]];
    NSString *string = [NSString stringWithFormat:@"/ %@",selectedCategory];
    label.font = [UIFont fontWithName:@"Helvetica" size:15.0];
    label.textColor = TextColor;
     [label setText:string];
    [view addSubview:label];
    [view setBackgroundColor:[UIColor colorWithRed:0.933f green:0.933f blue:0.933f alpha:1.00f]];
    return view;
}

enter image description here enter image description here

我研究了以下链接

iOS: UIButton resize according to text length

How can i increase the button width dynamically depends on the text size in iphone? Replacement for deprecated -sizeWithFont:constrainedToSize:lineBreakMode: in iOS 7? Replacement for deprecated sizeWithFont: in iOS 7?

IOS 7 sizeWithFont Deprecated

3 个答案:

答案 0 :(得分:1)

请使用:

CGSize size1 = [strkeyword1Partner1 sizeWithAttributes:@{NSFontAttributeName:[UIFont fontWithName:FONT_MYriad_REGULAR size:14.0f]}];

// Values are fractional -- you should take the ceilf to get equivalent values

CGSize adjustedSize1= CGSizeMake(ceilf(size1.width), ceilf(size1.height));

[btnKewword1 setFrame:CGRectMake(self.view.frame.size.width-(adjustedSize1.width +14), btnKewword.frame.origin.y, adjustedSize1.width+5, 20)];

答案 1 :(得分:1)

试试这个

    UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(50, 100, 100, 0);
    btn.titleLabel.numberOfLines = 0;
    [btn setTitle:@"dsgdfgdfsdsfgdfsgdfsgdfsgdfgdfgfkdsfgdsgdksfgkdskgf" forState:UIControlStateNormal];
    [self.view addSubview:btn];

答案 2 :(得分:1)

请尝试以下代码我添加UIButton的大小。

class Book(object):
    def __init__(self, title, price):
        self.book = {'title':title, 'price':price}              

book = Book('foo', 300)
print book.book['price']