Masnory 多個控制項與優先順序

2021-07-30 07:51:40 字數 1431 閱讀 9377

1.參考文章

masonry介紹與使用實踐:快速上手autolayout

ios自適應前段庫-masonry的使用

我是閱讀完成這兩篇才開始寫masnory的約束的。

2. 當uilabel左右之間相互適應的時候。因為不用設定uilabel左邊和右邊的寬度,即左邊的label不用設定靠右距離,右邊的label不用設定靠左的距離,有可能出現右邊文字過長造成覆蓋在左邊文字上,或者相反,這時候需要設定

make.right

.equalto(self.rightlabel

.mas_left);

leftlabel的右邊等於rightlabel的左邊,這樣可能出現兩種情況。因為uilalbel左+ uilabel右邊 = 總寬度

所以會造成uilabel左邊寬度變大 或者 uilabel 右邊寬度變大。此時masnory會預設左邊寬度變大

如果這時候需要在左邊label後邊新增乙個緊緊貼著的紅點,或者乙個uiimage ,就會發現被貼到右邊label附近了,因為左邊的label被拉伸了,大半行都被占領了,這時候因為你又不能設定masnory label的寬度,因為label的寬度是由文字自適應的,現在還沒傳遞文字,自然寬度也不知道,於是就有個方法來解決問題

改變先前的那行**為

make.right

.lessthanorequalto(self.rightlabel

.mas_left);

是指讓leftlabel的右邊*小於或者等於*rightlabel的左邊,這樣就會使得rightlabel的約束的優先順序大於或者等於左邊的約束,因為leftlabel+ rightlabel = 總寬度,這時候就會將rightlabel向左拉伸,leftlabel保持不變了,這時候小紅點的位置就不會錯了。就是靠著左邊了

self.titlelabel = [uilabel new];

[self addsubview:self.titlelabel];

self.redpot = [uilabel new];

[self addsubview:self.redpot];

self.rightlabel = [uilabel new];

[self addsubview:self.rightlabel];

[self.titlelabel mas_makeconstraints:^(masconstraintmaker *make) ];

[self.redpot mas_makeconstraints:^(masconstraintmaker *make) ];

[self.rightlabel mas_makeconstraints:^(masconstraintmaker *make) ];

3.不要賦給tableview的headview使用masnory。不會起效。

C 控制項Dock優先順序

最近被.net winform中的控制項布局搞困惑了,由於控制項都是使用dock方式的,操作起來也是比較方便,如果最大化,視窗大小調整等,都可以隨著視窗大小的變化而變化。但問題是,net winform的dock方式是根據先新增的控制項順序進行優先順序dock排列的,假設我想目前有三個控制項a b ...

RTOS 優先順序翻轉與優先順序繼承

優先順序反轉,是指在使用訊號量時,可能會出現的這樣一種不合理的現象,即 高優先順序任務被低優先順序任務阻塞,導致高優先順序任務遲遲得不到排程。但其他中等優先順序的任務卻能搶到cpu資源。從現象上來看,好像是中優先順序的任務比高優先順序任務具有更高的優先權。具體來說 當高優先順序任務正等待訊號量 此訊...

celery多個佇列優先順序實現

celery 是乙個簡單 靈活且可靠的,處理大量訊息的分布式系統,並且提供維護這樣乙個系統的必需工具。它是乙個專注於實時處理的任務佇列,同時也支援任務排程。優先順序佇列問題 celery 官方給出的是不支援優先順序佇列 建議看看這個論壇 或者 celery中broker 常用的是rabbitmq,r...