在我的 iOSswift 3.0应用程序中,我UIAlertController在当前的 ViewController 上显示了工作表实例。但是,当我在工作表的某个区域(变暗的半透明背景)之外点击时,我不想关闭该工作表,因为我已经必须取消一个操作。任何的想法?
我有带有更多按钮的 MGSwipeTableViewCell。当用户单击“更多”按钮时,将执行以下代码。
func onClickMore(for vmCell: VmCell) {
let sheet = UIAlertController(title: vmCell.vmItem?.vmNameWithoutIp, message: vmCell.vmItem?.ipAddress, preferredStyle: .actionSheet)
sheet.addAction(UIAlertAction(title: "Create Ticket", style: .default) { (action: UIAlertAction) in
})
sheet.addAction(UIAlertAction(title: "Start VM", style: .default) { (action: UIAlertAction) in
})
sheet.addAction(UIAlertAction(title: "Restart VM", style: .default) { (action: UIAlertAction) in
})
sheet.addAction(UIAlertAction(title: "Stop VM", style: .destructive) { (action: UIAlertAction) in
})
sheet.addAction(UIAlertAction(title: "Cancel", style: .cancel) { (action: UIAlertAction) in
})
present(sheet, animated: true) {
sheet.view.superview?.addGestureRecognizer(UITapGestureRecognizer(target: self, …Run Code Online (Sandbox Code Playgroud) 我正在 Swift 3.0 中处理一个项目,它在 UIScrollView 中有一个 UITableView 已经设置了它的约束。
要求是在这个 UITableView 中显示一个将从数组返回的歌曲列表,但是这个 UITableView 的大小应该根据数组的大小动态排列,所以我不需要滚动 UITableView 因为我可以看到所有UITableView 中的歌曲(这个 UITableView 在我的 scrollView 里面,所以我可以使用我的 scrollView 在列表中上下移动)。
我将如何实现这一目标?
预期行为:
对于 i = 0,打印语句在 0 秒后调用。
对于 i = 1,1.1 秒后调用打印语句
对于 i = 2,打印语句在 2.2 秒后调用
实际行为:
分别在 0、1、2、3 秒后调用打印语句,即忽略内部延迟函数。
那么为什么会出现差异呢?
for i in 0...3 {
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(i), execute: {
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(i/10), execute: {
print("function was called")
})
})
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试以设备允许的速度将随机网格渲染到 MTKView .. 我发现的几乎所有金属示例都展示了如何绘制仅定义一次缓冲区大小(即固定)的几何图形:
let dataSize = vertexCount * MemoryLayout<VertexWithColor>.size // size of the vertex data in bytes
let vertexBuffer: MTLBuffer = device!.makeBuffer(bytes: verticesWithColorArray, length: dataSize, options: []) // create a new buffer on the GPU
Run Code Online (Sandbox Code Playgroud)
目标是最终在给定一些点云输入的情况下动态生成网格。我已将绘图设置为通过点击触发,如下所示:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let touchPoint = touch.location(in: view)
print ("...touch \(touchPoint)")
autoreleasepool {
delaunayView.setupTriangles()
delaunayView.renderTriangles()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以用新的三角形刷新屏幕,只要我不要太频繁地点击。但是,如果我点击太快(比如双击),应用程序会崩溃并显示以下错误:
[CAMetalLayerDrawable texture] should not be called after presenting the drawable.
Run Code Online (Sandbox Code Playgroud)
性能显然与绘制的三角形数量有关。除了让应用程序稳定运行之外,同样重要的问题是,我怎样才能最好地利用 GPU …
我想在我的文本字段中只接受十进制值。
下面的代码允许我只输入数字和 '.' 但我们可以输入多个 '.'
我如何才能将其限制为一个 '.' 或者如何在 swift 3.1 中限制文本字段只接受十进制值
let aSet = NSCharacterSet(charactersIn:"0123456789.").inverted
let compSepByCharInSet = r_Qty_txt.text?.components(separatedBy: aSet)
let numberFiltered = compSepByCharInSet?.joined(separator: "")
Run Code Online (Sandbox Code Playgroud)
我的目标设备是 iPad。
listViewCell.swift 代码
import UIKit
class listViewCell: UITableViewCell, UITextFieldDelegate {
var delegate: CellInfoDelegate?
@IBOutlet weak var desc_lbl: UILabel!
@IBOutlet weak var openQty_lbl: UILabel!
@IBOutlet weak var r_Qty_txt: UITextField!
@IBOutlet weak var itemId_lbl: UILabel!
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let newString: String = (textField.text! as NSString).replacingCharacters(in: range, …Run Code Online (Sandbox Code Playgroud) 我试图将 2 个 uiimages 保存在一起,然后将组合的图像放入一个名为 finalImage 的图像视图中。但是,我收到错误消息,指出我已为我的问题分配了标题。只是想将组合的 uiimage 放在图像视图中。
@IBOutlet var finalImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let bottomImage:UIImage = UIImage(named: "pic")!
let topImage:UIImage = UIImage(named:"wall")!
// Change here the new image size if you want
let newSize = CGSize(width: bottomImage.size.width, height: bottomImage.size.height)
UIGraphicsBeginImageContextWithOptions(newSize, false, bottomImage.scale)
bottomImage.draw(in: CGRect(x: 0,y: 0,width: newSize.width,height: newSize.height))
topImage.draw(in: CGRect(x: 0,y: 0,width: newSize.width,height: newSize.height), blendMode:CGBlendMode.normal, alpha:1.0)
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
//error line
finalImage.image = newImage.images
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试快速提取括号内的一些数字。
例如。
var accname = "(1234) some random texts"
Run Code Online (Sandbox Code Playgroud)
如何从 var s 获取 1234 ?括号中的数字没有固定长度。它可以是 (12) 或 (12345)。
这是我尝试过的
var accname = ""
for i in accname.characters.indices[(accname.startIndex)..<accname.endIndex]{
while accname[i] != ")"{
accnumb.append(accname[i])
}
}
Run Code Online (Sandbox Code Playgroud) 我正在构建具有应用内购买功能的应用。该应用程序有 6 种产品在售(均为消耗品)。
该应用程序能够使用以下代码识别可购买的产品(来自 iTunes Connect):
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//Apple Store
appleStoreProducts = [productID, product5ID, product25ID, product100ID, product500ID, product1000ID]
SKPaymentQueue.default().add(self)
self.getProductInfo()
}
func getProductInfo() {
if SKPaymentQueue.canMakePayments() {
for product in appleStoreProducts {
let request = SKProductsRequest(productIdentifiers: NSSet(objects: product) as! Set<String>)
request.delegate = self
request.start()
}
} else {
// Tell user that In-App Purchase is disabled in settings
print("In-App Purchase is disabled in settings") …Run Code Online (Sandbox Code Playgroud) 我正在尝试更改动画所在的 CABasicAnimation 的 toValue/fromValue 的值 heartBeatAnimation
let heartBeatAnimation = CABasicAnimation(keyPath: "transform.scale.xy")
heartBeatAnimation.duration = 0.75
heartBeatAnimation.repeatCount = Float.infinity
heartBeatAnimation.autoreverses = true
heartBeatAnimation.fromValue = 1.0
heartBeatAnimation.toValue = 1.15
Run Code Online (Sandbox Code Playgroud)
当动画打开时,我transform.scale在动画期间获取当前值:
let currentValue = someView.layer.presentation()?.value(forKeyPath: "transform.scale")
heartBeatAnimation.fromValue = currentValue
heartBeatAnimation.toValue = currentValue
Run Code Online (Sandbox Code Playgroud)
更改值后,在删除动画然后再次添加之前heartBeatAnimation不会更改它toValue/fromValue!
有没有办法在动画播放时实时进行这些更改?!
swift3 ×10
ios ×6
swift ×6
animation ×1
blend-mode ×1
delay ×1
frame-rate ×1
ipad ×1
loops ×1
metal ×1
uiimage ×1
uiimageview ×1
uiscrollview ×1
uitableview ×1
uitextfield ×1
xcode8 ×1