簡體   English   中英

在運行時具有自動布局的UIButton大小

[英]UIButton size with Autolayout at runtime

我已經找到了幾個問題,但是對於如何真正做到這一點我還沒有找到一個可靠的答案,所以我希望這不是因為沒有找到具體答案而重復。

這是我的問題:我要重寫一個舊的iOS應用程序,該應用程序具有帶有自定義單元格的表格視圖,並且在每個單元格內部都有一個具有單一顏色的按鈕。 在運行時計算按鈕的寬度,以顯示每個按鈕在每個單元格中的寬度,從而創建看起來像邊圖的按鈕。

我想要/需要做同樣的事情,但是我的項目已經使用Autolayouts完成,並且我需要在iPhone和iPad上都可以使用它,因此在此時刪除autolayout會很痛苦。

由於具有自動布局功能,因此我的單元格布局受到約束,並且當所有單元格的寬度相同時,它看起來還不錯,但是我還沒有找到一種在運行時更改其寬度的方法。

這也是我在SO上發現的問題中的另一個問題。

這是我的單元在運行時的樣子:

在此處輸入圖片說明

我需要在中間(藍色的東西)處保留此按鈕,以使其保持在團隊名稱和值的中間,並且右邊的值必須保持在相同的位置(因此,如果條形圖不能移到左邊非常小)。

關於這個問題的任何建議將不勝感激。 謝謝!

給按鈕同時提供centerX和centerY約束; 它將保持在中間。 給它一個固定的寬度,並對該約束設置一個IBOutlet,以便您可以在代碼中更新其常數值以修改鋼筋的寬度。 團隊名稱標簽的左邊緣應具有約束條件,而值標簽的右邊緣應具有約束條件; 這將使它們在所有屏幕尺寸上都保持不變。

例如,此代碼在表格視圖控制器中

- (void)viewDidLoad {
    [super viewDidLoad];
    self.theData = @[@{@"name":@"One", @"value": @6094, @"width": @200}, @{@"name":@"Two", @"value": @210, @"width": @20}, @{@"name":@"Three", @"value": @7075, @"width": @250}, @{@"name":@"Four", @"value": @6648, @"width": @225}, @{@"name":@"Five", @"value": @2300, @"width": @100}, @{@"name":@"Six", @"value": @900, @"width": @50}];
    [self.tableView reloadData];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.theData.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    RDTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    cell.leftLabel.text = self.theData[indexPath.row][@"name"];
    cell.rightLabel.text = [NSString stringWithFormat:@"%@",  self.theData[indexPath.row][@"value"]];
    cell.widthCon.constant = [self.theData[indexPath.row][@"width"] floatValue];
    return cell;
}

得到這個結果,

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM