0

次のコードを実行すると、xcode 4.5 と SDK 6.0 で別の厄介なバグが見つかりました。

UIColor *newcolor = [UIColor colorWithCIColor:[CIColor colorWithString:@"1 1 1 1"]];
[button setTitleColor:newcolor forState:UIControlStateNormal];
UILabel *lbl = selectedbutton.titleLabel;

常にエラーで失敗します:

-[UICIColor colorSpaceName]: unrecognized selector sent to instance 0xa9864f0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UICIColor colorSpaceName]: unrecognized selector sent to instance 0xa9864f0'
*** First throw call stack: [...] 
libc++abi.dylib: terminate called throwing an exception
4

2 に答える 2

1

回避策を見つけました: colorWithCIColor を使用する前に、次の方法でコピーを作成しました:

newcolor = [UIColor colorWithCGColor:newcolor.CGColor];

そしてそれはクラッシュを解決します。とにかく奇妙です

于 2012-09-26T13:04:42.210 に答える
0

私はあなたと同じ状況にあり、RGB UIColor の構成値の文字列を持っていました

CIColor colorWithString: を使用すると、エラーを取り除くためにはるかにコンパクトになりますが、手動で変換しました。

NSArray * colorParts = [color componentsSeparatedByString: @" "];

CGFloat red = [[colorParts objectAtIndex:0] floatValue];
CGFloat green = [[colorParts objectAtIndex:1] floatValue];
CGFloat blue = [[colorParts objectAtIndex:2] floatValue];
CGFloat alpha = [[colorParts objectAtIndex:3] floatValue];

UIColor * newColor = [UIColor colorWithRed:red green:green blue:blue alpha:alpha];

[button setTitleColor:newcolor forState:UIControlStateNormal];

これは確かに最も洗練された方法ではありませんが、更新後に突然問題が発生した場合の適切な修正です。

于 2014-10-02T23:42:31.520 に答える