Вы можете использовать пример кода. Вы хотите узнать подробности о ClickableSpan. Пожалуйста, проверьте это documentaion
SpannableString myString = new SpannableString("This is example");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
ToastUtil.show(getContext(),"Clicked Smile ");
}
};
//For Click
myString.setSpan(clickableSpan,startIndex,lastIndex,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
//For UnderLine
myString.setSpan(new UnderlineSpan(),startIndex,lastIndex,0);
//For Bold
myString.setSpan(new StyleSpan(Typeface.BOLD),startIndex,lastIndex,0);
//Finally you can set to textView.
TextView textView = (TextView) findViewById(R.id.txtSpan);
textView.setText(myString);
textView.setMovementMethod(LinkMovementMethod.getInstance());
Вы близки, но colorWithRed: green: blue: alpha: ожидает значений от 0,0 до 1,0, поэтому вам нужно сдвинуть биты вправо и разделить на 255.0f :
CGFloat red = ((baseColor1 & 0xFF0000) >> 16) / 255.0f;
CGFloat green = ((baseColor1 & 0x00FF00) >> 8) / 255.0f;
CGFloat blue = (baseColor1 & 0x0000FF) / 255.0f;
РЕДАКТИРОВАТЬ - Также scanHexInt NSScanner пропустит 0x перед шестнадцатеричной строкой, но я не думаю, что он пропустит символ # перед шестнадцатеричной строкой. Вы можете добавить эту строку, чтобы справиться с этим:
[scanner2 setCharactersToBeSkipped:[NSCharacterSet symbolCharacterSet]];