Как я могу создать эффект «стекла» на своих собственных UIViews? - PullRequest
2 голосов
/ 01 июня 2010

Я работаю над приложением для iPhone, которое имеет непрямоугольные элементы пользовательского интерфейса. В настоящее время я создаю подклассы UIView, а в drawRect я использую CGPathRef для рисования черной границы и цветного интерьера.

Хотелось бы, чтобы эти предметы выглядели больше как «кнопки», поэтому я хотел бы иметь некоторые из тех же «стеклянных эффектов», которые используются, например, значки для приложения для iPhone (если для UIPrerenderedIcon не установлено значение true) или для других кнопок.

Я охотился и нашел это, которое, кажется, близко к тому, что мне нужно:

Градиенты на UIView и UILabels на iPhone

Но мне трудно понять, как обрезать градиент по форме.

Похоже, что свойство mask в представлении было бы правильным местом для перехода, что, похоже, потребовало бы от меня создания нового CALayer объекта с каким-то образом примененным к нему отсечением.

Я надеюсь, что для этого есть хорошая удобная функция, хотя, если мне нужно написать что-то более сложное, это тоже нормально. Мне просто трудно понять, как применить путь в качестве маски. Я не уверен, что мне нужно создать новый контекст рисования и нарисовать путь к нему? А затем используйте CGContextClip?

Я думаю, что у меня есть много правильных частей, я просто не могу понять, как их собрать.

Может ли кто-нибудь указать мне правильное направление? (Я рад прочитать больше в документации, просто укажите мне правильное направление, пожалуйста.)

1 Ответ

0 голосов
/ 28 сентября 2010

Вы можете создать CAShapeLayer и установить его путь к вашему CGPathRef. Затем установите свойство mask CAGradientLayer для вашего shapeLayer.

...