Skip to content

Commit

Permalink
iOS: Support pre iOS 6.0 way of setting label text/color too, mostly
Browse files Browse the repository at this point in the history
  • Loading branch information
UnknownShadow200 committed Apr 17, 2024
1 parent 2c07e5f commit b2bf814
Showing 1 changed file with 31 additions and 2 deletions.
33 changes: 31 additions & 2 deletions src/interop_ios.m
Expand Up @@ -352,6 +352,25 @@ void Clipboard_SetText(const cc_string* value) { }
return str;
}


static UIColor* GetStringColor(const cc_string* text) {
cc_string left = *text, part;
char colorCode = 'f';
Drawer2D_UNSAFE_NextPart(&left, &part, &colorCode);

BitmapCol color = Drawer2D_GetColor(colorCode);
return ToUIColor(color, 1.0f);
}

static NSString* GetColorlessString(const cc_string* text) {
char buffer[128];
cc_string tmp = String_FromArray(buffer);

String_AppendColorless(&tmp, text);
return ToNSString(&tmp);
}


static void FreeContents(void* info, const void* data, size_t size) { Mem_Free(data); }
// TODO probably a better way..
static UIImage* ToUIImage(struct Bitmap* bmp) {
Expand Down Expand Up @@ -1403,7 +1422,10 @@ void LBackend_ButtonInit(struct LButton* w, int width, int height) {
void LBackend_ButtonUpdate(struct LButton* w) {
UIButton* btn = (__bridge UIButton*)w->meta;

NSString* str = ToNSString(&w->text);
UIColor* color = GetStringColor(&w->text);
[btn setTitleColor:color forState:UIControlStateNormal];

NSString* str = GetColorlessString(&w->text);
[btn setTitle:str forState:UIControlStateNormal];
}
void LBackend_ButtonDraw(struct LButton* w) { }
Expand Down Expand Up @@ -1541,7 +1563,14 @@ void LBackend_LabelUpdate(struct LLabel* w) {
UILabel* lbl = (__bridge UILabel*)w->meta;
if (!lbl) return;

lbl.attributedText = ToAttributedString(&w->text);
if ([lbl respondsToSelector:@selector(attributedText)]) {
// attributedText - iOS 6.0
lbl.attributedText = ToAttributedString(&w->text);
} else {
lbl.textColor = GetStringColor(&w->text);
lbl.text = GetColorlessString(&w->text);
}

[lbl sizeToFit]; // adjust label to fit text
}
void LBackend_LabelDraw(struct LLabel* w) { }
Expand Down

0 comments on commit b2bf814

Please sign in to comment.