Mono с C # - преобразование интерфейса WinForms в какао? (или любой другой интерфейс OS X по умолчанию) - PullRequest
4 голосов
/ 15 февраля 2011

У меня есть приложение на C #, которое мне удалось настроить для работы с Mono и запустить на OS X. Само приложение работает просто отлично, но на самом деле не очень хорошо выглядит при работе на OS X. Шрифты для кнопоквыглядят неровно, и многие функции по умолчанию, которые есть для версии для Windows 7, отсутствуют.Для меня это выглядит как приложение Win98 с прикрепленной к нему верхней границей OS X.

Я изучаю, возможно, изучение Objective-C, чтобы я мог писать «правильные» приложения для OS X, но дляв тот момент, когда я бы хотел, чтобы мои проекты работали на Apple, без того, чтобы они выглядели одинаково Франкенштейном.

Можно ли преобразовать приложение WinForms в Какао?Является ли Какао правильным интерфейсом для использования?

Если возможно, каков наилучший способ сделать это, и кто-нибудь из вас знает хорошее руководство / рецензию на процесс, чтобы заставить меняначалось? Было бы неплохо увидеть что-то, что действительно показывает процесс, который выполняется.Я узнаю гораздо больше из примера кода вместе с кратким объяснением, чем из общей статьи.

Еще раз спасибо!

Ответы [ 2 ]

7 голосов
/ 16 февраля 2011

Если вы хотите создать собственно выглядящее OSX-приложение, вы правы в том, что хотите использовать Какао.Если вы все еще хотите использовать C #, вы можете использовать MonoMac .

MonoMac позволяет вам создавать свой графический интерфейс на OSX (фактически, используя Interface Builder, поставляемый Apple), но позволяетнаписать свое приложение в .Net / C #.Таким образом, вы можете продолжать использовать существующую логику приложения и вам нужно только изменить код графического интерфейса.

2 голосов
/ 15 февраля 2011

Практически во всех случаях верно, что перенесенное приложение всегда будет выглядеть как перенесенное приложение. Даже крупные компании с огромными бюджетами не могут ничего лучше (я цитирую Adobe - что за беспорядок).

При наложении лица Mac на порт приложения Windows отобразятся его швы. Если вы хотите, чтобы приложение работало как собственное приложение (и используете преимущества, связанные с производительностью, которые предлагает платформа), то лучшим подходом будет использование архитектурной документации, спецификаций и требований, которые, я знаю, у вас есть - добросовестный разработчик, которого вы Есть - адаптировать дизайн к родной платформе. Это Какао Frameworks (API), которые написаны на Objective-C (язык).

Просто нет другого пути, который бы не заканчивался дерьмово выглядящим портом, изобилующим ошибками и поведенческими проблемами, вызванными недостаточным знакомством портера с целевой платформой. Это не только ограничено Mono / C # -to-Cocoa / Obj-C. Противоположность так же верна. Даже порты Java-for-PlatformA-Java-for-PlatformB настольных приложений страдают от этих проблем. Начните с надежной архитектуры и постройте платформу, если вы хотите получить лучший пользовательский опыт.

Тем не менее, вы уже на шаг впереди, осознавая это и желая добиться большего. Браво! :-) Хотя я не знаю ни одного учебного пособия для этого пути, я бы посоветовал даже это не правильный подход, так как вы указали, что ищете качество. Воспользуйтесь многими книгами по какао и многими другими онлайн-сообществами (например, этим) и изучите платформу, прежде чем переходить на архитектуру и кодовую базу, адаптированную к какао.

Обновление на основе обсуждения комментариев

Чтобы было ясно: я не говорю, что нет никакого пути или что нет никакого инструмента, который сделал бы это возможным. Я действительно много чего видел, но не помню и не буду гуглить. Моя точка зрения остается неизменной: OP касается качества нативного внешнего вида (и я предполагаю поведение и, возможно, производительность), а инструменты переноса / уровни перевода не достигают этого из-за врожденных различий в архитектуре платформы и идиомах пользовательского опыта. ОП подозревает, что лучше всего изучить платформу и создать ее специально для нее, и я согласен. Ваше мнение может отличаться. Имейте это.

...