Не много времени в данный момент, но просто первое, что пришло на ум...
модель объекта позволяет Вам дать последовательный интерфейс базе данных (и другие возможные системы) даже вне того, что может сделать интерфейс хранимой процедуры. При помощи общекорпоративных бизнес-моделей можно удостовериться, что все приложения последовательно влияют на данные, которые являются ОЧЕНЬ важной вещью. Иначе Вы заканчиваете с неправильными данными, которые являются просто злыми.
, Если у Вас только есть одно приложение затем, у Вас действительно нет системы "предприятия", независимо от того, как большой, который приложение или Ваши данные. В этом случае можно использовать подход, подобный тому, о чем Вы говорите. Просто знайте о работе, которая будет необходима, если Вы решите вырастить свои системы в будущем.
Вот несколько вещей, которые необходимо иметь в виду (IMO) хотя:
Я не думаю, что здесь есть встроенная поддержка текстовых теней, как в случае с UILabel
.
Две идеи:
(1 ) [Умеренно сложно кодировать.] Добавить второй UITextField
позади оригинала с очень маленьким смещением (возможно, на (0,2,0,8)?). Вы можете прослушивать каждое изменение текста по клавишам, реализуя метод textField: shouldChangeCharactersInRange: replaceString:
в протоколе UITextFieldDelegate
. Используя это, вы можете одновременно обновлять нижний текст. Вы также можете сделать нижний текст (текст тени) серым и даже слегка размытым, используя тот факт, что текстовые прямоугольники с частичным смещением выглядят размытыми. Добавлено: О да, не забудьте установить верхнее текстовое поле ' s цвет фона на [UIColor clearColor]
, если вы согласны с этой идеей.
(2) [Кодировать еще интереснее.] Подкласс UITextField
и переопределить метод drawRect:
. Я не делал этого раньше, поэтому сразу упомяну, что это зависит от того, является ли это назначенным методом рисования, и может оказаться, что вам придется переопределить другую функцию рисования, такую как drawTextInRect:
, который относится к UITextField
. Теперь настройте контекст рисования для рисования теней с помощью CGContextSetShadow
функций и вызовите [super drawRect: rect];
. Надеюсь, это сработает - в случае, если исходный код UITextField
очищает параметры тени контекста рисования, эта идея скрывается, и вы
У меня немного другая проблема - мне нужна размытая тень на UILabel. К счастью, решением этой проблемы оказалось число (2) от Тайлера
Вот мой код:
- (void) drawTextInRect:(CGRect)rect {
CGSize myShadowOffset = CGSizeMake(4, -4);
CGFloat myColorValues[] = {0, 0, 0, .8};
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(myContext);
CGColorSpaceRef myColorSpace = CGColorSpaceCreateDeviceRGB();
CGColorRef myColor = CGColorCreate(myColorSpace, myColorValues);
CGContextSetShadowWithColor (myContext, myShadowOffset, 5, myColor);
[super drawTextInRect:rect];
CGColorRelease(myColor);
CGColorSpaceRelease(myColorSpace);
CGContextRestoreGState(myContext);
}
Это класс, который расширяется от UILabel и рисует текст с тенью вниз и вправо на 4 пикселя, тень серая с непрозрачностью 80% и заметно размыта.
Я думаю, что решение Тайлера номер 2 немного лучше по производительности, чем решение Тайлера номер 1 - вы имеете дело только с одним UILabel в представлении и, если предположить, что вы ' Если не перерисовывать каждый кадр, это не снижает производительности рендеринга по сравнению с обычным UILabel.
PS Этот код в значительной степени заимствован из документации Quartz 2D