Первое легко. Создайте новый UIView
и установите цвет фона на тот, который вам больше нравится.
Второй сложнее. Как вы упомянули, вы можете поместить новый вид поверх него с отключенной прозрачностью, но для того, чтобы закрепить его в тех же местах, вам нужно использовать маску. Примерно так:
UIImage *myImage = [UIImage imageNamed:@"foo.png"];
UIImageView *originalImageView = [[UIImageView alloc] initWithImage:myImage];
[originalImageView setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
[parentView addSubview:originalImageView];
UIView *overlay = [[UIView alloc] initWithFrame:[originalImageView frame]];
UIImageView *maskImageView = [[UIImageView alloc] initWithImage:myImage];
[maskImageView setFrame:[overlay bounds]];
[[overlay layer] setMask:[maskImageView layer]];
[overlay setBackgroundColor:[UIColor redColor]];
[parentView addSubview:overlay];
Имейте в виду, что вам нужно будет #import <QuartzCore/QuartzCore.h>
в файле реализации.