我在这里试验import Foundation
import UIKit
class View2: UIViewController {
override func viewDidLoad(){
formulaSelection.text = indexPathForCell(Cell: UITableView)
}
}
并找到了我无法解释的内容,并希望有人可以帮助我。
为什么向UITextFieldDelegate
添加Drawable
似乎“打破”(?)CornerPathEffect
Paint
?
更具体地说,我正在按原样测试this HexagonDrawable
类。这就是我得到的:
但是,如果我将EVEN_ODD
设置为FillType
,如下所示(构造函数)......
CornerPathEffect
......这就是我得到的:
圆角,是的,但没有轮廓的外观(奇数/偶数/奇数)。有人可以解释一下原因吗?
答案 0 :(得分:5)
HexagonDrawable类绘制两个不同的六边形,堆叠在一起。我不知道你是否需要这样做,但我认为实现相同结果的最佳方法是使用Paint with Stroke风格。
为此,您需要移除第二个六边形路径并减小六边形的大小(因此视图不会将其剪切掉):
public void computeHex(Rect bounds) {
final int width = bounds.width();
final int height = bounds.height();
// We need to decrease the hexagon's size, so the view won't cut our stroke
final int size = Math.min(width - (strokeWidth / 2), height - (strokeWidth / 2));
final int centerX = bounds.left + (width / 2);
final int centerY = bounds.top + (height / 2);
hexagon.reset();
hexagon.addPath(createHexagon(size, centerX, centerY));
// Remove the second path
// hexagon.addPath(createHexagon((int) (size * .8f), centerX, centerY));
}
并将描边效果添加到绘画中:
private int strokeWidth;
public HexagonDrawable(int color, int strokeWidth) {
this.strokeWidth = strokeWidth;
paint.setColor(color);
// Add Stroke style and width
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(strokeWidth);
// You can add these other attributes if you need to
// paint.setDither(true);
// paint.setStrokeJoin(Paint.Join.ROUND);
// paint.setStrokeCap(Paint.Cap.ROUND);
// Remove the fill type, you won't need anymore
// hexagon.setFillType(Path.FillType.EVEN_ODD);
// Finally add the Path Effect
paint.setPathEffect(new CornerPathEffect(30.0f));
}
这应该会产生与你所寻找的效果非常相似的效果。
希望它有所帮助! ;)
编辑:我忘了警告你,行程宽度不能超过CornerPathEffect的半径,否则它会被切断。