Как выровнять текст в двух разных ячейках? - PullRequest
0 голосов
/ 22 октября 2019

Я использую Xamarin.Forms в своем проекте, однако эта проблема также может быть связана с собственной разработкой. У меня есть две разные ячейки, одна по умолчанию TextCell (в нативном случае это будет просто UITableViewCell со стилем Basic), а другая - пользовательская ячейка с Label и некоторыми дополнительными функциями.

Я использую обе ячейки в одном табличном представлении, поэтому я бы хотел, чтобы текст был выровнен по горизонтали. Для пользовательской ячейки я использовал левое поле 15, однако на iOS 13 на iPhone 11 оказалось, что поле отличается от iPhone 7, например. В результате у меня есть невыровненные ячейки с разными левыми полями.

Я знаю, что мог бы использовать пользовательские ячейки для всех строк, но, может быть, есть лучший подход? Можно ли получить это системное поле и установить его в другой ячейке?

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

Вы можете найти поля для устройств всех размеров, добавить свойство в категорию UITableViewCell и вернуть поле в соответствии с размером устройства в методе get;Это не очень хорошее решение, но мы можем получить поля устройств разных размеров

@interface UITableViewCell (Margin)

@property (nonatomic, assign) CGFloat wk_margin;

@end

@implementation UITableViewCell (Margin)

static char kMarginKey;

- (CGFloat)wk_margin {
    id value = objc_getAssociatedObject(self, &kMarginKey);
    return [value floatValue];
}

- (void)setWk_margin:(CGFloat)wk_margin {
    CGFloat margin = 0.0;
    // TODO :set margin according to device size
    // ...
    objc_setAssociatedObject(self, &kMarginKey, @(margin), OBJC_ASSOCIATION_ASSIGN);
}

@end
0 голосов
/ 22 октября 2019

1. установить текст textLabel для того, чтобы получить его leftMargin и скрыть его

self.textLabel.text = @"";

2.полить поле в layoutSubviews

- (void)layoutSubviews {
[super layoutSubviews];
CGFloat leftMargin = self.textLabel.frame.origin.x;

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...