使用iOS 10.20& Swift 3.0 想要在我的代码中使用Stephen Poletto编写的这段优秀代码,但在Swift 3.0中真的需要它。
https://github.com/spoletto/SPUserResizableView
今天花了三个小时来通过它,没有信心它会工作,但我必须尝试,必须更容易然后重新发明轮子没有;无论如何,我都希望能在SO中找到一些帮助。
我需要翻译这个......
- (void)resizeUsingTouchLocation:(CGPoint)touchPoint {
// (1) Update the touch point if we're outside the superview.
if (self.preventsPositionOutsideSuperview) {
CGFloat border = kSPUserResizableViewGlobalInset + kSPUserResizableViewInteractiveBorderSize/2;
if (touchPoint.x < border) {
touchPoint.x = border;
}
我在Swift中得到了它,但我担心与目标C不同,它似乎无法改变参数的值,因为他似乎在这里做了什么?
我得到了..
func resizeUsingTouchLocation(touchPoint: CGPoint) {
// (1) Update the touch point if we're outside the superview.
if (self.preventsPositionOutsideSuperview) {
let border:CGFloat = CGFloat(kSPUserResizableViewGlobalInset) + CGFloat(kSPUserResizableViewInteractiveBorderSize) / 2.0;
if (touchPoint.x < border) {
touchPoint.x = border
}
它生成错误,无法更改let属性,在这种情况下touchPoint!还有一些,但这两个特别是正在逐步实现......
答案 0 :(得分:2)
在Swift中,您无法更改输入参数。在Swift 3之前,您可以在参数名称前添加var
,然后您就可以修改一个副本。 Swift 3方法是在函数顶部添加var variableName = variableName
:
func resizeUsingTouchLocation(touchPoint: CGPoint) {
var touchPoint = touchPoint
// (1) Update the touch point if we're outside the superview.
if self.preventsPositionOutsideSuperview {
let border = CGFloat(kSPUserResizableViewGlobalInset) + CGFloat(kSPUserResizableViewInteractiveBorderSize) / 2.0
if touchPoint.x < border {
touchPoint.x = border
}
我还删除了()
语句中不需要的类型声明if
和;
。