Я сделал это как это:
Загрузка шрифт:
- (void)loadFont{
// Get the path to our custom font and create a data provider.
NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"mycustomfont" ofType:@"ttf"];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
// Create the font with the data provider, then release the data provider.
customFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
}
Теперь, в Вашем drawRect:
, сделайте что-то вроде этого:
-(void)drawRect:(CGRect)rect{
[super drawRect:rect];
// Get the context.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
// Set the customFont to be the font used to draw.
CGContextSetFont(context, customFont);
// Set how the context draws the font, what color, how big.
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
CGContextSetFillColorWithColor(context, self.fontColor.CGColor);
UIColor * strokeColor = [UIColor blackColor];
CGContextSetStrokeColorWithColor(context, strokeColor.CGColor);
CGContextSetFontSize(context, 48.0f);
// Create an array of Glyph's the size of text that will be drawn.
CGGlyph textToPrint[[self.theText length]];
// Loop through the entire length of the text.
for (int i = 0; i < [self.theText length]; ++i) {
// Store each letter in a Glyph and subtract the MagicNumber to get appropriate value.
textToPrint[i] = [[self.theText uppercaseString] characterAtIndex:i] + 3 - 32;
}
CGAffineTransform textTransform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextSetTextMatrix(context, textTransform);
CGContextShowGlyphsAtPoint(context, 20, 50, textToPrint, [self.theText length]);
}
В основном необходимо сделать некоторое цикличное выполнение грубой силы через текст и futzing о с магическим числом для нахождения смещения (здесь, посмотрите, что я использую 29), в шрифте, но это работает.
кроме того, необходимо удостовериться, что шрифт юридически встраиваем. Большинство не и существуют адвокаты, которые специализируются на этом виде вещи, так быть предупрежденными.
Взгляните на функции привязки данных ASP.NET в .NET 4.0 - входит в Visual Studio 2010. Это именно то, что вы ищете, если вас устраивает технология MS.
Блог, в котором подробно описывается функция
Предварительный просмотр технологии сообщества на codeplex
Теоретически вы можете просто включить файл ASP.NET AJAX js из ваших HTML-файлов и сделайте решение кроссплатформенным.
Итак, чтобы прямо ответить на ваш вопрос - это абсолютно жизнеспособное решение проблемы создания поддерживаемых, слабо связанных веб-интерфейсов пользователя. И да, серверная часть вашего приложения делает меньше - она становится более истинным сервисным слоем, где все, с чем она связана, - это обмен данными. На самом деле это хорошо, потому что это способствует повторному использованию среди клиентов. Представьте, что ваше приложение WPF и ваше веб-приложение используют один и тот же сервер среднего уровня для отправки / получения данных? В любом случае у клиентов есть много доступной вычислительной мощности - почему бы не использовать ее, чтобы сделать ваше решение более масштабируемым (чем меньше сервер делает, тем больше работы делают ваши клиенты, которая распределяется между ВСЕМИ клиентами)
Сложная часть - это двусторонняя привязка - когда вы подключаетесь к событию, что какой-то объект был изменен, и к событию, что что-то в пользовательском интерфейсе изменилось (например, пользователь что-то ввел в элемент управления вводом). Односторонняя привязка все равно будет полезна.
Похоже, что Microsoft - единственная компания, которая сейчас создает полное решение по той схеме, которую вы хотите. Библиотека Yahoo YUI действительно выполняет связывание данных, которое является полусогласованным, но не по той же схеме, что и WPF / Silverlight, как вы создали.
и событие, что что-то в пользовательском интерфейсе изменилось (например, пользователь ввел что-то в элемент управления вводом). Односторонняя привязка все равно будет полезна.Похоже, что Microsoft - единственная компания, которая сейчас создает полное решение по тому шаблону, который вам нужен. Библиотека Yahoo YUI действительно выполняет связывание данных, которое является полусогласованным, но не по той же схеме, что и WPF / Silverlight, как вы создали.
и событие, что что-то в пользовательском интерфейсе изменилось (например, пользователь ввел что-то в элемент управления вводом). Односторонняя привязка все равно будет полезна.Похоже, что Microsoft - единственная компания, которая сейчас создает полное решение по той схеме, которую вы хотите. Библиотека Yahoo YUI выполняет связывание данных, которое является полусогласованным, но не по той же схеме, что и WPF / Silverlight, как вы создали.
It looks possible and viable, with the only downside being that your code is relying on a whole lot of client side processing to get to the end result.
In my opinion, you're still a whole lot better of using a server side MVC architecture rather than trying to create a client side MVVM framework.