Мне это интересно post about water ripple simulation. Он включает в себя Xcode project с небольшим какао-приложением для OSX. Я попытался запустить приложение в iOS с помощью Swift, но я не смог найти решение следующей проблемы:Что я могу использовать вместо NSBitmapImageRep в iOS? (Пример рябь воды)
Приложение OSX использует NSBitmapImageRep
для рисования растровых данных из массива на экран (это происходит в BBRippleView .m). К сожалению, NSBitmapImageRep
недоступен в iOS. Вместо этого я попытался использовать CGImage
, что «работает»: я вижу какую-то водную рябь, но они разбиты каким-то странным образом, и они не двигаются так, как им предполагалось. Я предполагаю, что CGImage рассчитывает получить битмап-данные в другом формате, чем в настоящее время.
Edit: Вот мой IOS RippleView класс: RippleView.swift
Edit 2: Модифицированная RippleView.swift
Что бы правильно реализовать следующие OSX сегменты кода в прошивкой с помощью Swift?
image = [[NSImage alloc] initWithSize:NSMakeSize(cols, rows)];
bufrep = [[NSBitmapImageRep alloc]
initWithBitmapDataPlanes:NULL
pixelsWide:cols
pixelsHigh:rows
bitsPerSample:8
samplesPerPixel:1
hasAlpha:NO
isPlanar:YES
colorSpaceName:NSDeviceWhiteColorSpace
bytesPerRow:0
bitsPerPixel:0];
[image addRepresentation:bufrep];
И
-(void)applyBuffer
{
unsigned char* data = [bufrep bitmapData];
int x = 0;
int y = 0;
int position = 0;
for (y = 0; y < rows; y ++) {
for (x = 0; x < cols ; x ++) {
position = (y * cols) + x;
data[position] = (char)buffer2[position] << 1;
}
}
}
Покажите нам код, который вы написали, чтобы создать растровое изображение, изменить его и превратить в 'CGImage' на iOS. –
добавил файл RippleView.swift – ediheld
[NSBitmapImageRep для iPhone или прямой доступ к пикселям для CGImage] (http://stackoverflow.com/q/3142178), или вы ищете больше для справки по отладке? Если последние, пожалуйста, отредактируйте свой заголовок, чтобы быть более конкретным для проблемы с вашим кодом. –