Ответ 1
UIColor использует 0-1 вместо 0-255, поэтому вам просто нужно преобразовать его так:
[UIColor colorWithRed:34.0/255.0 green:34.0/255.0 blue:34.0/255.0 alpha:1.0];
Обновление
После повторного чтения вашего вопроса я понял, что ваша реальная проблема заключается не в преобразовании в UIColor, а в получении значений. Я мало знаю о регулярном выражении, но NSScanner - это простой объект Objective-C, который может делать то же самое, хотя и более подробное. Попробуйте это для размера. Я уверен, что могут быть лучшие способы даже, возможно, более эффективное использование самого NSScanner, но это определенно работает и будет работать для любых значений int, которые проходят через.
NSString *backgroundColorString = @"rgb(34, 34, 34)";
NSScanner *scanner = [NSScanner scannerWithString:backgroundColorString];
NSString *junk, *red, *green, *blue;
[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:&junk];
[scanner scanUpToCharactersFromSet:[NSCharacterSet punctuationCharacterSet] intoString:&red];
[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:&junk];
[scanner scanUpToCharactersFromSet:[NSCharacterSet punctuationCharacterSet] intoString:&green];
[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:&junk];
[scanner scanUpToCharactersFromSet:[NSCharacterSet punctuationCharacterSet] intoString:&blue];
UIColor *backgroundColor = [UIColor colorWithRed:red.intValue/255.0 green:green.intValue/255.0 blue:blue.intValue/255.0 alpha:1.0];