ОБНОВЛЕНИЕ:
Совершенно нелепо, что я должен был это сделать, потому что должен быть более простой способ, но я закончил тем, что расположил два независимых UIViews один над другим и затем установил непрозрачность и альфа соответственно.Это работает.
Я сейчас пытаюсь написать новое представление, которое делает правильный путь , который выглядит примерно так:
UIView : myview
- (subview) UIImageView
- (subview) UIImageView
The code looks something like this...
@interface customView : UIView
{
...
UIImageView *foregroundImage;
UIImageView *backgroundImage;
...
}
@end
@implementation
- (void) awakeFromNib
{
...
self.backgroundColor = [UIColor whiteColor];
self.alpha = 1;
self.opaque = YES;
self.clearsContextBeforeDrawing = FALSE;
[backgroundImage initWithImage:<...>];
backgroundImage.alpha = 0.5; // Yes, this should be 0.5. The background should be a bit lucid
backgroundImage.opaque = YES; // I want the white background of the parent UIView to show through
[foregroundImage initWithImage:<...>];
foregroundImage.alpha = 1; // Yes, this should be 1. The surrounding space is clear...
backgroundImage.opaque = YES;
[self addSubview:backgroundImage];
[self addSubview:foregroundImage];
[self bringSubviewToFront:foregroundImage];
[self setNeedsLayout];
[foregroundImage setNeedsDisplay];
[backgroundImage setNeedsDisplay];
[self setNeedsDisplay];
...
}
- (void) drawRect: (CGRect) rect
{
...
// update the images to latest
[backgroundImage setImage:<..new..>];
[foregroundImage setImage:<..new..>];
[backgroundImage setNeedsDisplay]; // necessary?
[foregroundImage setNeedsDisplay]; // necessary?
[self setNeedsDisplay]; // necessary?
...
}
@end
Результат?Ничего такого.Нет обновленийЯ читал, что у других тоже была эта проблема (UIImageView не обновляется при установке свойства Image), но не видел решения.Изображения поступают из внеэкранных буферов, которые записываются во время сенсорных событий и т. Д.
Я знаю, что эти буферы имеют правильные изображения, потому что если я сделаю что-то вроде:
CGImageRef bitmap = CGBitmapContextCreateImage(bufferContext);
CGContextDrawImage( UIGraphicsGetCurrentContext(), CGRectMake(0,0,self.bounds.size.width, ...height), bitmap);
CGImageRelease(bitmap);
... Я вижу правильное изображение.UIImageViews не хотят обновляться.Их непрозрачность и т. Д. Также устанавливается соответствующим образом.
Будет продолжать расти, не хочу писать взломать для этого.Должен быть простой, элегантный способ ...
Любая помощь / руководство приветствуется.