簡體   English   中英

UITableViewCellAccessoryCheckmark和AutoLayout約束

[英]UITableViewCellAccessoryCheckmark and AutoLayout constraints

我有自定義UITableViewCell並管理我的單元格的選擇。 選擇單元格並顯示復選標記后,單元格Content View寬度會縮小,帶有尾隨約束的標簽會向左移動。 如何有效避免內容移動?

我不想將約束設置為前導,因為我具有靈活的tableview寬度並且它們是右對齊的。 當我想通過其IBOutlets更新代碼中的標簽約束時,我遇到了麻煩,因為我在cellForRow:返回了UITableViewCell多個子類cellForRow:並且我在didSelectRowAtIndexPath:遇到無法識別的選擇器錯誤didSelectRowAtIndexPath:當試圖在代碼中設置約束時。 任何優雅的解決方 謝謝。

在此輸入圖像描述

在此輸入圖像描述

我有一個類似的(實際上,確切的)問題,其中復選標記會將所有內容推向左側。

- 編輯:

在我原來的答案后幾個小時,我意識到這是一個非常簡單的問題。

向左推動是推動單元格的contentView的約束。 所以?

將約束從右側的項目(如i按鈕) 連接到單元格本身 ,而不是其contentView。

對單元格視圖的約束



- 原始答案( 實際答案在頂部,這是為了記錄 ):

我剛剛意識到這是一個非常簡單的解決方案。 當checkmark打開時,我有一個按鈕被推開,我必須保持一個約束以保持它(所以'取消選中'不會將按鈕移動到右邊)。 從右邊開始硬編碼'寬度',整體上只是不好的做法。 沒關系,我無法“獲得”動態標記'寬度'來做到這一點。

解?

從左邊拿一個約束。

而已。 我也有一個標簽,所以在我的情況下:從左邊的按鈕到標簽的約束(因此它們不會重疊)和從左到左的內容視圖的按鈕。 基本上,無論右邊的任何動作都沒有真正“到達”左側(而是讓所有東西“坐在”右側)。

細胞有左邊的約束

此行為是設計使然。

獲得所需行為的最簡單方法是在每個單元格上設置一個空的附件視圖,將所有內容向左移動與復選標記相同的距離。

如何將復選標記一直放在那里,只是玩alpha /透明度?

    if checked
    {
        cell.accessoryType = .checkmark
        cell.tintColor = cell.tintColor.withAlphaComponent(1)
    }
    else
    {
        cell.accessoryType = .checkmark
        cell.tintColor = cell.tintColor.withAlphaComponent(0)
    }

暫無
暫無

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

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