Я обволакиваю голову, используя категории для некоторых вещей, где я мог бы раньше использовать наследование.Категории лучшие практики
Вещь, которую я сейчас делаю, является более практичным вопросом, где я не уверен, как это должно быть реализовано .. Я пишу категорию на UIActivityIndicatorView
, которая в основном будет использоваться для отображения индикатора активности в произвольном виде. Ниже вы найдете пример кода, как я это делаю, и мой главный вопрос: насколько это хорошо. И я был бы признателен за комментарии по поводу того, почему это плохо, если это так. Благодарю.
Категория:
@interface UIActivityIndicatorView (Customizations)
- (UIActivityIndicatorView *) inView:(UIView *) target;
@end
Реализация:
@implementation UIActivityIndicatorView (Customizations)
- (UIActivityIndicatorView *) inView:(UIView *) target {
[self startAnimating];
[self setHidden:NO];
self.frame = target.bounds;
self.backgroundColor = [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.6f];
return self;
}
@end
Тогда я хотел бы использовать его как это:
[background addSubview:[loader inView:background]];
Я предполагаю, что другой способ сделать это - сделать функцию инициализации, чтобы отобразить представление контейнера и просто вернуть «стиль», или, возможно, не вернуть ничего (void
), и просто позволить методу делать стиль.
Так что я ищу некоторые рекомендации относительно того, как с этим справиться.
я не получаю где вы делаете вторую копию «UIActivityIndicatorView». (?) В противном случае я бы предложил только передать 'CGRect' вместо' UIView', так как это все методы из 'target'. –
Да, «вторая копия» была лишь некоторой путаницей с моей стороны. Я отредактирую это, потому что это смущает любого, кто читает вопрос. О отправке 'CGRect' вместо' UIView' Я согласен, что это хорошее предложение, спасибо за это. – qrikko