我有一个实例,UIBezierPath我想将笔画的颜色改为黑色以外的东西.有谁知道如何在Swift中这样做?
这段代码编译得很好
let ciImage = CIImage(image:UIImage())
Run Code Online (Sandbox Code Playgroud)
然而,当我把它移动到延伸 UIImage
extension UIImage {
func foo() {
let ciImage = CIImage(image:UIImage()) // compile error
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下编译错误
Cannot call value of non-function type 'CIImage?'
为什么?
使用Xcode Playground 7.1.1进行测试.和Swift 2.1
我正在尝试cocosmotion,这是Cocos2d的Rubymotion实现.在我正在完成的教程中,我有一个以struct作为参数的方法.我咨询了Rubymotion和MacRuby文档,但无法弄清楚如何根据我需要的结构实例化一个新对象.我认为主要的问题是结构以小写字母开头,Ruby在我尝试使用它时认为它是一个局部变量.
我相信我遇到了同样的问题:https: //github.com/MacRuby/MacRuby/issues/121
有解决方案或解决方法吗?
结构在Objective-C中定义,如下所示:
typedef struct _ccTexParams {
GLuint minFilter;
GLuint magFilter;
GLuint wrapS;
GLuint wrapT;
} ccTexParams;
Run Code Online (Sandbox Code Playgroud)
我试图调用的方法需要一个ccTexParams结构.
这是我尝试过的:
@mysprite = Pointer.new("{ccTexParams=
{GLUint=GL_LINEAR_MIPMAP_LINEAR}
{GLUint=GL_LINEAR}
{GLUint=GL_CLAMP_TO_EDGE}
{GLUint=GL_CLAMP_TO_EDGE}}", 4)
Run Code Online (Sandbox Code Playgroud)
当我这样尝试时:
@mysprite = Pointer.new(:object, 4)
@mysprite[0] = GL_LINEAR_MIPMAP_LINEAR
@mysprite[1] = GL_LINEAR
@mysprite[2] = GL_CLAMP_TO_EDGE
@mysprite[3] = GL_CLAMP_TO_EDGE
Run Code Online (Sandbox Code Playgroud)
运行时错误是:
expected instance of Pointer of type `{_ccTexParams=IIII}', got `@' (TypeError)
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
@mysprite = Pointer.new("_ccTexParams", 4)
@mysprite[0] = GL_LINEAR_MIPMAP_LINEAR
@mysprite[1] = GL_LINEAR
@mysprite[2] = GL_CLAMP_TO_EDGE
@mysprite[3] = GL_CLAMP_TO_EDGE
Run Code Online (Sandbox Code Playgroud)
错误:
Can't find pointer …Run Code Online (Sandbox Code Playgroud) 我想增加一个Int?
目前我写的这个:
return index != nil ? index!+1 : nil
Run Code Online (Sandbox Code Playgroud)
有没有更漂亮的方式来写这个?
我搜索谷歌,但我找不到一种方法将新元素追加到Swift中的数组对象.出现错误代码"Missing arguments fot parameter"name in in call".我的代码被遵循.
var arrayObj: [(id: Int, name: String)] = []
var idInt: Int = 1
var nameString: String = "hoge"
arrayObj.append(( // ----> "Missing arguments fot parameter "name" in call"
id: idInt,
name: nameString
))
Run Code Online (Sandbox Code Playgroud)
如果你知道任何解决方案,我会很高兴.谢谢.
随着美国本周大量的15亿美元彩票,我在Ruby中编写了一个函数来制作强力球.在Powerball中,您可以从范围中选择5个数字1..69(没有重复项),并从该范围中选择1个数字1..26.
这就是我想出的:
def pball
Array(1..69).shuffle[0..4].sort + [rand(1..26)]
end
Run Code Online (Sandbox Code Playgroud)
它的工作原理是创建一个从1到69的整数数组,对该数组进行混洗,选择前5个数字,对它们进行排序,最后添加1到26之间的数字.
要在Swift中执行此操作需要更多的工作,因为Swift没有内置shuffle方法Array.
这是我的尝试:
func pball() -> [Int] {
let arr = Array(1...69).map{($0, drand48())}.sort{$0.1 < $1.1}.map{$0.0}[0...4].sort()
return arr + [Int(arc4random_uniform(26) + 1)]
}
Run Code Online (Sandbox Code Playgroud)
由于没有shuffle方法,因此可以通过[Int]在范围内创建with值来实现1...69.然后它map用于创建[(Int, Double)]一个元组对数组,其中包含数字和Double范围内的随机数0.0 ..< 1.0.然后,它使用Double值对此数组进行排序,并使用秒map返回[Int],然后使用切片[0...4]提取前5个数字并对sort()它们进行排序.
在第二行中,它在范围中附加一个数字1...26.我尝试将其添加到第一行,但Swift给出了错误:
表达太复杂,无法在合理的时间内解决; 考虑将表达式分解为不同的子表达式.
任何人都可以建议如何将其转换为1行功能?也许有更好的方法来选择5个数字1...69.
我试图在Swift中添加标签,这些标签是在循环中添加的.然后我想在添加时为每个添加一个'TapGesture'事件.它可以工作,但问题是被调用的函数从标签中获取数据,以便在单击时使用,但标签已经被重新定义,然后它会从最后添加的数据中获取数据,而不是单击的数据.我怎样才能使每一个都独一无二?
self.label.attributedText = self.myMutableString
let tapGesture = UITapGestureRecognizer(target: self, action: handleTap(label))
self.label.userInteractionEnabled=true
self.label.addGestureRecognizer(tapGesture)
self.label.font = UIFont.boldSystemFontOfSize(28)
self.label.sizeToFit()
self.label.center = CGPoint(x: screenWidth, y: top)
if(kilom>=30||self.located==false){
self.scroller.addSubview(self.label)
if(device=="iPhone"||device=="iPhone Simulator"){
top = top+80
}
else{
top = top+140
}
}
Run Code Online (Sandbox Code Playgroud)
下面的代码是手势识别器,它获取标签数据并使用它:
func handleTap(sender:UILabel){
var a = self.label.text
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let resultViewController = storyBoard.instantiateViewControllerWithIdentifier("displayer")
self.presentViewController(resultViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud) 我正在SwiftUI使用Apple的官方教程进行学习:https:
//developer.apple.com/tutorials/swiftui/building-lists-and-navigation
一切工作正常,直到我尝试NavigationView通过调用在上显示导航标题.navigationBarTitle。
我试图刷新实时视图,重新启动Xcode,但它仍然没有显示。
这是我的代码:
import SwiftUI
struct LandmarkList : View {
var body: some View {
NavigationView {
List(landmarkData) { landmark in
LandmarkRow(landmark: landmark)
}
}
.navigationBarItem(title: Text("Done"))
.navigationBarTitle(Text("Landmarks"))
}
}
#if DEBUG
struct LandmarkList_Previews : PreviewProvider {
static var previews: some View {
LandmarkList()
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
Xcode看起来像这样:

根据教程,它应该显示导航标题,但就我而言不显示。
知道为什么吗?谢谢!
我一直在为Swift研究Apple的状态机,并找到了几个例子,但是没有一个真的死了.
有人可以在Swift中掀起一个超级简单的GKStateMachine,可能有两个状态,最好是在一个Swift文件中?谢谢!