我想恢复路径绘图的方向.所以我从ValueValue改为了值,但现在在动画开始时可以看到完整路径并且它开始消失.我有路径:
UIBezierPath* bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint: CGPointMake(213.79, 170.83)];
[bezierPath addCurveToPoint: CGPointMake(131.93, 95) controlPoint1: CGPointMake(212.14, 128.68) controlPoint2: CGPointMake(176.13, 95)];
[bezierPath addCurveToPoint: CGPointMake(50, 173.85) controlPoint1: CGPointMake(86.68, 95) controlPoint2: CGPointMake(50, 130.3)];
[bezierPath addCurveToPoint: CGPointMake(131.93, 252.7) controlPoint1: CGPointMake(50, 217.4) controlPoint2: CGPointMake(86.68, 252.7)];
[bezierPath addCurveToPoint: CGPointMake(157.55, 248.76) controlPoint1: CGPointMake(140.88, 252.7) controlPoint2: CGPointMake(149.49, 251.32)];
[bezierPath addCurveToPoint: CGPointMake(209.69, 281) controlPoint1: CGPointMake(166.59, 267.78) controlPoint2: CGPointMake(186.54, 281)];
[bezierPath addCurveToPoint: CGPointMake(267, 225.85) controlPoint1: CGPointMake(241.34, 281) controlPoint2: CGPointMake(267, 256.31)];
[bezierPath addCurveToPoint: CGPointMake(213.79, 170.83) controlPoint1: CGPointMake(267, 196.71) controlPoint2: CGPointMake(243.53, 172.86)]; …
Run Code Online (Sandbox Code Playgroud) core-animation core-graphics cabasicanimation ios uibezierpath
实现这一目标的最简单,性能最低的方法是什么?
现在我有一个超过60000行的UIBezierPath.我想从中创建一个图像,稍后将在屏幕上移动并拉伸.
我有值的路径,我想制作这个渐变.
这是代码:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:171.0/255.0 alpha:0.6] CGColor]);
CGContextSetFillColorWithColor(context, [[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:171.0/255.0 alpha:0.6] CGColor]);
UIBezierPath *aPath = [UIBezierPath bezierPath];
[aPath moveToPoint:CGPointMake(30.0, 100.0)];
[aPath addLineToPoint:CGPointMake(200.0, 120.0)];
[aPath addLineToPoint:CGPointMake(300, 210)];
[aPath addLineToPoint:CGPointMake(300, 420)];
[aPath addLineToPoint:CGPointMake(30, 420.0)];
[aPath addLineToPoint:CGPointMake(30, 100.0)];
[aPath closePath];
[aPath fill];
Run Code Online (Sandbox Code Playgroud)
有没有指出这个代码的问题?
我试图UIView
用手指画线,它用一种颜色很好.如果我尝试更改颜色并再次绘制,则之前的UIBezierPath
颜色也会更改为新颜色.因此,我无法绘制不同的颜色线,保持前一个颜色线UIView
我将所有属性(path,linecolor)设置为非原子和强大的属性 UIView
以供参考:
选择颜色后,我在颜色选择器委托方法中更改了我的UIView的描边颜色:
#pragma mark - FCColorPickerViewControllerDelegate Methods
-(void)colorPickerViewController:(FCColorPickerViewController *)colorPicker didSelectColor:(UIColor *)color {
self.drawView.lineColor = color; //this works fine
// self.drawView.path=[UIBezierPath bezierPath]; tried this to create new bezier path with new color, but this erases the olde bezier path and return new
// [self.drawView.lineColor setStroke]; tried this
// [self.drawView.lineColor setFill]; tried this
[self dismissViewControllerAnimated:YES completion:nil]; //dismiss the color picker
}
Run Code Online (Sandbox Code Playgroud)
这是我的绘图方法:
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super initWithCoder:aDecoder]) …
Run Code Online (Sandbox Code Playgroud) 我在我的自定义UIView的drawRect中绘制了一个圆圈:
- (void)drawRect:(CGRect)rect {
...
UIBezierPath *ovalPath = [UIBezierPath bezierPathWithOvalInRect:rect];
[UIColor.whiteColor setStroke];
ovalPath.lineWidth = 1;
[ovalPath stroke];
}
Run Code Online (Sandbox Code Playgroud)
椭圆形总是夹在边缘上.我怎样才能避免剪辑?是唯一的方法是插入矩形吗?
我正在尝试绘制一个饼图,该饼图由大小相等的段组成,每个段的颜色不同。我以此为基础建立我的代码:在SWIFT中绘制圆弧段进度
let circlePath = UIBezierPath(ovalInRect: CGRect(x: 200, y: 200, width: 150, height: 150))
var segments: [CAShapeLayer] = []
let segmentAngle: CGFloat = 1.0 / CGFloat(totalSegments)
for var i = 0; i < totalSegments; i++ {
let circleLayer = CAShapeLayer()
circleLayer.path = circlePath.CGPath
// start angle is number of segments * the segment angle
circleLayer.strokeStart = segmentAngle * CGFloat(i)
//create a gap to show segments
let gapSize: CGFloat = 0.008
circleLayer.strokeEnd = circleLayer.strokeStart + segmentAngle - gapSize
circleLayer.lineWidth = 10 …
Run Code Online (Sandbox Code Playgroud) 我正在Xcode 7/Swift 2中编写一个项目,它针对iPhone 6/6s进行了优化(即该项目有一个启动屏幕文件和iPhone 6/6s的启动屏幕图像).
幸运或不幸的是,iPhone 6用户可以在设备上打开"显示缩放"设置,从而放大界面元素.打开时,此设置有效地扩大了标准iPhone 5屏幕尺寸以适应iPhone 6屏幕空间,上采样到x1.171875.此上采样会导致基于栅格的元素(如图像,图标或包含UIBezierPath()
绘图的视图)显示模糊(温和但明显).
几个问题:
感谢任何经验丰富的回答这个难题.谢谢.
1 - 当用户打开它时,如何在代码中指示故事板上的元素(例如UIView)忽略显示缩放设置?
2 - 当显示缩放开启时,有哪些技术可确保像素完美精确度?(例如,是否可以使用OpenGL渲染渲染图形,如果是这样,如何?)
3 - 当显示缩放开启时,是否可以用x4图像替换x2图像以减少模糊?(即iOS会在iPhone 6上将x4图像下采样到x2图像吗?)
4 - UIBezierPath()
当显示缩放开启时,图形如何保持像素完美的精度?
我试图绘制一个简单的形状作为游戏界面的一部分,大多数教程使用UIBezierPath来定义CAShapeLayer的路径.但是,我注意到UIBezierPath已经有了一个现有的填充功能.
这可能是一个愚蠢的问题,但使用它和使用单独的CAShapeLayer绘制路径有什么区别?还有哪一个更好?
我想用UIBezierPath制作这个UIView:
有可选的旋转功能(虽然如果我知道如何绘制旭日(我称之为视图),我可以自己制作)
答案在目标C中给出:https://stackoverflow.com/a/14991292/7715250
我尝试使用此代码在Swift中转换它(Playground中的复制粘贴将起作用):
import UIKit
class SunBurst: UIView{
override func draw(_ rect: CGRect) {
let radius: CGFloat = rect.size.width / 2.0
UIColor.red.setFill()
UIColor.blue.setStroke()
let bezierPath = UIBezierPath()
let centerPoint = CGPoint(x: rect.origin.x + radius, y: rect.origin.y + radius)
var thisPoint = CGPoint(x: centerPoint.x + radius, y: centerPoint.y)
bezierPath.move(to: centerPoint)
var thisAngle: CGFloat = 0.0
let sliceDegrees: CGFloat = 360.0 / 20 / 2.0
let half: CGFloat = 180
let floatRadius = Float(radius)
for _ in 0..<20 …
Run Code Online (Sandbox Code Playgroud) 我的目标是在用户在屏幕上滑动时实现类似Adobe Illustrator的行.目前它非常不稳定 - 这是当前情况的截图:
我认为这显然是我想要的.我希望平滑这些直线.这叫做抗锯齿吗?
- (void)touchesBegan: (CGPoint)point
{
currentStroke = [[Stroke alloc] initWithStartPoint:point];
[strokes addObject:currentStroke];
}
- (void)touchesMoved: (CGPoint)point
{
if (!currentStroke) {
[self touchesBegan:point];
}
[currentStroke.points addObject:[NSValue valueWithCGPoint:point]]
pathTwo = [self createPath];
[self scaleToFit];
[self setNeedsDisplay];
}
- (UIBezierPath *)createPath {
UIBezierPath * bezierPath = [UIBezierPath bezierPath];
for (Stroke * stroke in strokes) {
[bezierPath moveToPoint:stroke.startPoint];
for (NSValue * value in stroke.points) {
[bezierPath addLineToPoint:[value CGPointValue]];
}
}
return bezierPath;
}
- (void)touchesEnded: (CGPoint)point
{
[points removeAllObjects];
[self …
Run Code Online (Sandbox Code Playgroud) ios ×10
uibezierpath ×10
objective-c ×5
swift ×4
uiview ×2
cashapelayer ×1
drawrect ×1
gradient ×1
optimization ×1
uikit ×1
xcode ×1