TTSpeechBubbleShape в Three20 рисует только «речевые» треугольники сверху и снизу - PullRequest
3 голосов
/ 02 апреля 2010

Итак, я использую библиотеку Three20 для приложения iPhone и хочу использовать стиль TTSpeechBubbleShape для представления. Но треугольник, кажется, не хочет рисовать слева или справа. Я вижу в источнике, что это много геометрии, и мне было интересно, если кто-то занимался этим или знал, как это исправить.

Ответы [ 2 ]

1 голос
/ 14 мая 2011

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

Вы можете найти код здесь .

Меняется на addRightEdge :

if (_pointLocation > 135 && _pointLocation < 225) {
  CGFloat pw = _pointAngle >= 90 && _pointAngle < 270 ? _pointSize.width : -_pointSize.width;
  CGFloat pointY = ((_pointLocation-135)/90)*fh;
  CGPathAddLineToPoint(path, nil, fw, pointY-floor(_pointSize.height/2));
  CGPathAddLineToPoint(path, nil, fw+pw, pointY);
  CGPathAddLineToPoint(path, nil, fw, pointY+floor(_pointSize.height/2));
}

Меняется на addLeftEdge :

if ((_pointLocation > 315 && _pointLocation <= 360)
    || (_pointLocation >= 0 && _pointLocation < 45)) {
  CGFloat pw = ((_pointAngle >= 270 && _pointAngle <= 360)
                || (_pointAngle >= 0 && _pointAngle <= 90))
    ? _pointSize.width
    : -_pointSize.width;
  CGFloat pointY = (_pointLocation > 315 && _pointLocation <= 360)
    ? fh-(((_pointLocation-315)/90)*fh)
    : (fh/2)-((_pointLocation/90)*fh);
  CGPathAddLineToPoint(path, nil, 0, pointY+floor(_pointSize.height/2));
  CGPathAddLineToPoint(path, nil, -pw, pointY);
  CGPathAddLineToPoint(path, nil, 0, pointY-floor(_pointSize.height/2));
}
1 голос
/ 20 июля 2010

Возможно, вы ищете TTRoundedLeftArrowShape и TTRoundedRightArrowShape, которые выглядели бы как стандартная кнопка Назад iPhone.

...