Я хотел бы спросить, как реализовать поп-анимацию, удерживая клавиатуру для расширения клавиатуры клавиатуры iOS 8. Я знаю, как назначить длинный жест нажатия на каждый ключ, но не знает, как оживить клавиши для представления других символов в этом конкретном ключе. Любая помощь будет оценена по достоинству. Благодарю!:)
EDIT: Я видел, как этот вопрос задавался здесь, но разница в том, что он смог создать поп-анимацию. p >
РЕДАКТИРОВАТЬ 2: Я видел еще один подобный вопрос, заданный здесь, но они отличаются от того, как он выглядит по сравнению с представлением по умолчанию на стандартная клавиатура.
РЕДАКТИРОВАТЬ 3: Я смог добиться желаемого поведения при нажатии клавиш клавиатуры. Мне просто нужно знать, как правильно рисовать расширенный вид ключа. Прикрепленные изображения для справки. Первый - это то, что мы достигли до сих пор. Я хотел бы знать, как нарисовать эту букву F, а затем перевести ее на UIView
.
РЕДАКТИРОВАТЬ 4: Я смог создать ключевой поп-вид, но не в желаемой форме или слое, который я хотел, чтобы это напоминало стандартную клавиатуру. Вот он для справки:
EDIT 5: Я попробовал демонстрационную версию PaintCode и создал код ниже. Это находится внутри моего метода drawRect
на моем пользовательском представлении. Ширина моих ключей обычно составляет 26,0 и высота 39,0. Я также использую Objective-C btw.
UIBezierPath* bezierPath = UIBezierPath.bezierPath;
[bezierPath moveToPoint: CGPointMake(26, 5.12)];
[bezierPath addLineToPoint: CGPointMake(26, 18.03)];
[bezierPath addCurveToPoint: CGPointMake(23.05, 22.41) controlPoint1: CGPointMake(26, 19.88) controlPoint2: CGPointMake(24.82, 21.51)];
[bezierPath addCurveToPoint: CGPointMake(19.62, 25.27) controlPoint1: CGPointMake(22.05, 23.24) controlPoint2: CGPointMake(20.79, 24.3)];
[bezierPath addCurveToPoint: CGPointMake(19.62, 39.95) controlPoint1: CGPointMake(19.62, 30.82) controlPoint2: CGPointMake(19.62, 39.95)];
[bezierPath addCurveToPoint: CGPointMake(17.17, 42) controlPoint1: CGPointMake(19.62, 41.08) controlPoint2: CGPointMake(18.52, 42)];
[bezierPath addLineToPoint: CGPointMake(8.83, 42)];
[bezierPath addCurveToPoint: CGPointMake(6.38, 39.95) controlPoint1: CGPointMake(7.48, 42) controlPoint2: CGPointMake(6.38, 41.08)];
[bezierPath addCurveToPoint: CGPointMake(6.38, 25.33) controlPoint1: CGPointMake(6.38, 39.95) controlPoint2: CGPointMake(6.38, 30.89)];
[bezierPath addCurveToPoint: CGPointMake(5.67, 24.74) controlPoint1: CGPointMake(6.15, 25.14) controlPoint2: CGPointMake(5.91, 24.94)];
[bezierPath addCurveToPoint: CGPointMake(5.37, 24.49) controlPoint1: CGPointMake(5.57, 24.66) controlPoint2: CGPointMake(5.47, 24.57)];
[bezierPath addLineToPoint: CGPointMake(5.32, 24.45)];
[bezierPath addCurveToPoint: CGPointMake(2.75, 22.3) controlPoint1: CGPointMake(4.41, 23.69) controlPoint2: CGPointMake(3.5, 22.93)];
[bezierPath addCurveToPoint: CGPointMake(1.02, 20.85) controlPoint1: CGPointMake(2.06, 21.92) controlPoint2: CGPointMake(1.47, 21.43)];
[bezierPath addCurveToPoint: CGPointMake(0.98, 20.82) controlPoint1: CGPointMake(0.99, 20.83) controlPoint2: CGPointMake(0.98, 20.82)];
[bezierPath addCurveToPoint: CGPointMake(0, 18.03) controlPoint1: CGPointMake(0.36, 20.02) controlPoint2: CGPointMake(-0, 19.06)];
[bezierPath addLineToPoint: CGPointMake(0, 5.12)];
[bezierPath addCurveToPoint: CGPointMake(2.48, 1.01) controlPoint1: CGPointMake(0, 3.44) controlPoint2: CGPointMake(0.97, 1.94)];
[bezierPath addCurveToPoint: CGPointMake(6.05, 0) controlPoint1: CGPointMake(3.48, 0.39) controlPoint2: CGPointMake(4.71, 0.02)];
[bezierPath addLineToPoint: CGPointMake(6.13, 0)];
[bezierPath addLineToPoint: CGPointMake(19.87, 0)];
[bezierPath addCurveToPoint: CGPointMake(26, 5.12) controlPoint1: CGPointMake(23.25, 0) controlPoint2: CGPointMake(26, 2.29)];
[bezierPath closePath];
[[UIColor redColor] setFill];
[bezierPath fill];
Проблема в том, что она выглядит так:
Если только я могу сделать его достаточно большим, чтобы сделать его похожим на клавиатуру по умолчанию, тогда это сработает.