标签: swift3

不要在 iOS 中的对话框区域外使用点击手势关闭 uialertcontroller 表

在我的 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)

ios swift swift3

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

动态调整 UITableView 的大小,显示为不可滚动的内容列表

我正在 Swift 3.0 中处理一个项目,它在 UIScrollView 中有一个 UITableView 已经设置了它的约束。

要求是在这个 UITableView 中显示一个将从数组返回的歌曲列表,但是这个 UITableView 的大小应该根据数组的大小动态排列,所以我不需要滚动 UITableView 因为我可以看到所有UITableView 中的歌曲(这个 UITableView 在我的 scrollView 里面,所以我可以使用我的 scrollView 在列表中上下移动)。

我将如何实现这一目标?

uitableview uiscrollview ios swift swift3

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

UILabel 看起来像带有阴影的像素

您可以在图片中看到,带有阴影的视图内部的标签看起来是像素化的(也是 UIButton),而阴影之外的另一个 UIView 看起来正常。如何消除这种像素化效果?

像素化标签和按钮

感谢您的 awnsers!

swift swift3

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

为什么将 DispatchQueue 延迟函数放在另一个 DispatchQueue 中在 Swift 中不起作用

预期行为:

对于 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)

loops delay delayed-execution swift3 xcode8

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

使用 Metal 和 Swift 3 渲染快速变化的任意大小的网格

我正在尝试以设备允许的速度将随机网格渲染到 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 …

frame-rate triangulation render-to-texture metal swift3

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

如何限制文本字段在swift中只接受十进制值

我想在我的文本字段中只接受十进制值。

下面的代码允许我只输入数字和 '.' 但我们可以输入多个 '.'

我如何才能将其限制为一个 '.' 或者如何在 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)

uitextfield ipad ios swift swift3

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

无法分配“[UIImage]”类型的值?输入“UIImage”(swif3)

我试图将 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)

uiimageview uiimage ios swift3 blend-mode

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

如何快速提取括号内的数据?

我正在尝试快速提取括号内的一些数字。

例如。

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)

swift swift3

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

支付队列 - 交易失败

我正在构建具有应用内购买功能的应用。该应用程序有 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)

in-app-purchase ios swift swift3

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

如何在动画打开时更改 CABasicAnimation 的 toValue/fromValue

我正在尝试更改动画所在的 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

有没有办法在动画播放时实时进行这些更改?!

animation cabasicanimation ios swift3

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