小编oOE*_*ric的帖子

如何在iPhone上绘制平滑的草图

可能重复:
iPhone平滑的草图绘制算法

我想开发一个支持草图绘制的iPhone应用程序.

我在touchesMoved中使用了这样的代码:

UIGraphicsBeginImageContext(self.view.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 0.0, 1.0, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), points.pointB.x, points.pointB.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), points.pointA.x, points.pointA.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)

看到:

曲线不平滑

曲线不够平滑.

我尝试过使用catforge.net/project /curve/files

看到:

平滑的曲线

这次曲线更平滑但有2个问题:

  1. Catmull-Rom Spline使用许多三次贝塞尔曲线段和二次贝塞尔曲线段来形成曲线.当触摸结束时,不能确定二次贝塞尔曲线段.在用户将手指从屏幕上移开之前,我无法绘制二次线段.我只能在用户绘图时绘制立方体段,这样他会感到有些延迟.当手指快速移动时,曲线滞后于手指.

  2. 该算法过多地校正了角落,因此用户无法绘制具有尖角的星形.

我非常希望为用户提供非常好的绘图环境,例如Autodesk的"Sketch Book"应用程序.(见下图)

看到:

非常顺利

该应用程序提供平滑的曲线,它还允许我绘制一个尖角的星.

我怎么能在iPhone上这样做?我可以使用哪种算法来实现"Sketch Book"这样的高质量?我的参考代码?

谢谢!!

iphone drawing curvesmoothing

9
推荐指数
0
解决办法
855
查看次数

如何在Apple Watch模拟器中滚动

我想测试复杂功能,但我不能在下面的屏幕中滚动复杂功能(在模拟器中).

模拟器的其他屏幕可以通过鼠标滚动.我正在使用Xcode 9.

设置复杂性

xcode apple-watch watchos xcode9

5
推荐指数
1
解决办法
1144
查看次数

打破SwiftUI中List的最大容量

我在列表中添加了10个HStack。当我添加第11个HStack时,Xcode显示错误。

该页面教我如何使用组突破10个孩子的限制。但这对我没有用。如何在列表中添加第11个HStack?


作品:

        List {

            Text("????????")

            HStack {
                Text("?")
                TextField("?", text: self.$name)
            }

            ...

            HStack {
                Text("????")
                TextField("??????/??", text: self.$name)
            }

    }
Run Code Online (Sandbox Code Playgroud)

无法运作:

        List {

            Text("????????")

            HStack {
                Text("?")
                TextField("?", text: self.$name)
            }

            ...

            HStack {
                Text("????")
                TextField("??????/??", text: self.$name)
            }

            HStack { //The extra HStack
                Text("????2")
                TextField("??????/??", text: self.$name)
            }

    }
Run Code Online (Sandbox Code Playgroud)

出现以下错误消息:

    <unknown>:0: error: ambiguous reference to member 'buildBlock()'
SwiftUI.ViewBuilder:3:24: note: found this candidate
    public static func buildBlock() -> EmptyView
                       ^
SwiftUI.ViewBuilder:4:24: note: found this candidate
    public static …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

1
推荐指数
1
解决办法
220
查看次数

标签 统计

apple-watch ×1

curvesmoothing ×1

drawing ×1

ios ×1

iphone ×1

swift ×1

swiftui ×1

watchos ×1

xcode ×1

xcode9 ×1