Я новичок в подклассе, но мне нужен подкласс UILabel, чтобы дать какой-либо текст внутри метки иметь трехпиксельный контур. Из this page, я использовал этот метод:iOS - Доступ к новым свойствам в подклассе
- (void)drawTextInRect:(CGRect)rect
{
CGSize shadowOffset = self.shadowOffset;
UIColor *textColor = self.textColor;
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(c, 3);
CGContextSetLineJoin(c, kCGLineJoinRound);
CGContextSetTextDrawingMode(c, kCGTextStroke);
self.textColor = [UIColor whiteColor];
[super drawTextInRect:rect];
CGContextSetTextDrawingMode(c, kCGTextFill);
self.textColor = textColor;
self.shadowOffset = CGSizeMake(0, 0);
[super drawTextInRect:rect]; self.shadowOffset = shadowOffset;
}
Это прекрасно работает, и я могу изменить цвета для отображения любого цвета я хотел бы как для текста и контура.
Может ли кто-нибудь дать мне знать, как создать свойство под названием «outlineColor», которое позволит мне установить этот подкласс на любой ярлык, который я хочу, и изменить цвет контура?
По сути, я хотел бы быть в состоянии установить классу, состоящему лейбла к «CustomLabelClass», а затем в какой-то другой класс, я хотел бы сказать что-то вроде:
[myLabel setOutlineColor:[UIColor whiteColor]];
Я не знаю, как обойти это. Благодарю.
Спасибо! Я думал, что я пробовал что-то подобное этому, но в других классах, когда я набрал «[myLabel», опция «setOutlineColor» никогда не появлялась. Однако я установил класс в Interface Builder, а не инициализировал его с помощью кода. Может быть, это была проблема, как вы думаете? – achiral
Возможно. Я не пробовал использовать это через IB, но, предполагая, что класс объекта установлен на ваш пользовательский класс в Identity Inspector, я думаю, он должен работать. – jonkroll