そのため、iPhone アプリに Three20 ライブラリを使用しており、ビューに TTSpeechBubbleShape スタイルを使用したいと考えています。しかし、三角形は左側または右側に描画したくないようです。ソースを見ると、多くのジオメトリがあり、誰かがこれに取り組んだか、修正方法を知っているかどうか疑問に思っていました。
質問する
624 次
2 に答える
1
TTRoundedLeftArrowShape
とを探しているかもしれませんTTRoundedRightArrowShape
。これは、標準の [iPhone の戻る] ボタンのように見えます。
于 2010-07-20T18:39:38.030 に答える
1
ソースを見て、足りないロジックを埋めて、吹き出しの左右のエッジを描画しました。
コードはこちらにあります。
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));
}
于 2011-05-14T01:10:10.007 に答える