小编use*_*232的帖子

确定CATextLayer中textBox的大小

我写了这段代码,效果很好; 但我需要弄清楚CATextLayer中文本的大小才能完成它?我使用轻敲手势来获取x/y的想法,输入文本并让它弄清楚在CATextLayer对象/视图中绘制它所需的CGSize.

overload func ViewDidLoad()
    let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
    container.addGestureRecognizer(tap)
}

 func handleTap(gesture: UITapGestureRecognizer) {
    let location = gesture.location(in: gesture.view)
    startX = location.x
    startY = location.y
    drawText(onLayer: view.layer, fromPoint: CGPoint(x: startX, y: startY), toPoint: CGPoint(x:location.x, y:location.y))
}

func drawText(onLayer layer: CALayer, fromPoint start: CGPoint, toPoint end:CGPoint) {
    let myTextLayer = CATextLayer()
    myTextLayer.string = "Google"
    myTextLayer.backgroundColor = UIColor.black.cgColor
    myTextLayer.foregroundColor = UIColor.white.cgColor
    //myTextLayer.frame = view.bounds
    let myBounds = CGRect(origin: start, size: CGSize(width: 128, height: 32))
    myTextLayer.frame = myBounds
    layer.addSublayer(myTextLayer) …
Run Code Online (Sandbox Code Playgroud)

graphics calayer ios catextlayer swift

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

如何在swift中禁用导航控制器滑动

我想在您在此处看到的导航窗口中禁用左侧拉动功能.

在此输入图像描述

但我不知道从哪里开始?我想让Back按钮工作,但不是我在快照中做的拖动因为它对我的应用程序有效.

uinavigationcontroller ios swift

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

CKFetchRecordsOperation + CKQueryOperations ...我错过了什么?

在大量搜索示例代码之后,管理好一起CKFetchRecordsOperation; 这是......但我一定错过了什么.不要误会我的意思......但......

要执行CKFetchRecordsOperation,您需要一个CKRecordIDs的NSArray; 要获得CKRecordIDs的NSArray,您需要执行CKQuery,您可以构建CKRecordIDs的NSArray.

但是等一下,提取CKRecordIDs的过程使用CKQuery,我可以直接下载CKRecords吗?

如果没有CKQuery,你如何获得CKRecordID的NSArray?

-(void)doSingleBeaconsDownload
{
    CKDatabase *publicDatabase = [[CKContainer containerWithIdentifier:@"iCloud.cqd.ch.BeaconBrowser"] publicCloudDatabase];
    NSPredicate *predicatex = [NSPredicate predicateWithFormat:@"iBeaconConfig = %@",iBeaconsConfirmed.giReferenceID];
    CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Running" predicate:predicatex];

    [self.delegate performSelectorOnMainThread:@selector(processCompleted:) withObject:@"Downloading Configuration ..." waitUntilDone:YES];

    [publicDatabase performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {

        if (error) {
            NSLog(@"Batch Download Error iCloud error %@",error);
        }
        else {
            NSMutableArray *rex2download = [[NSMutableArray alloc] init];
            for (CKRecord *rex in results) {
                [rex2download addObject:rex.recordID];
            }

            CKFetchRecordsOperation *fetchRecordsOperation = [[CKFetchRecordsOperation alloc] initWithRecordIDs:rex2download];

           /* fetchRecordsOperation.perRecordCompletionBlock = ^(CKRecord *record, …
Run Code Online (Sandbox Code Playgroud)

objective-c nsoperation ios cloudkit ckrecord

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

在swift 2.0中一次显示一个字符

Swift 2.0新手; 试图学习它,对动画感兴趣并尝试编写一些代码,一次在屏幕上显示一个消息.

我写了这个,它有效,但是我忍不住可以不用CALayers和/或alpha值做些什么?或者一些有生命的小发明,更快捷的东西; 这种感觉和看起来有点笨重,真的很好.

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


let supertext  = "A long time ago, in a galaxy far, far away ..."
let round = supertext.characters.count
for i in 0...round {
    let delay = Double(i)/10
    let subtext = supertext[supertext.startIndex..<supertext.startIndex.advancedBy(i)]
    NSTimer.scheduledTimerWithTimeInterval(delay, target: self, selector: "ghostText:", userInfo: ["theText" :subtext], repeats: false)
    }
}

var view3:UITextView = UITextView()

func ghostText(timer:NSTimer) {
    view3.removeFromSuperview() …
Run Code Online (Sandbox Code Playgroud)

uitextview uiview nsattributedstring ios swift

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

检测AVPlayer视频开始停止事件

这是一个很好的简单的avplayer代码片段,在队列中播放一小部分视频.我的问题.我实际上想在队列中的视频之间暂停.可能吗?

我注意到率两次发射; 状态只会像通知那样触发一次.

import UIKit
import AVKit
import AVFoundation

class ViewController: UIViewController {

@IBOutlet weak var VideoView: UIView!
var player:AVQueuePlayer = AVQueuePlayer()

@IBAction func NextSlide(sender: AnyObject) {
    player.play()
}

override func viewDidLoad() {
    func NextSlide(sender: AnyObject) {
    }
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let arrayOfPaths: [String] = ["http://192.100.1.1:8080/dino1.mov","http://192.100.1.1:8080/dino1.mov","http://192.100.1.1:8080/dino1.mov"]

    var shots = [AVPlayerItem]()

    for item in arrayOfPaths {
        let url2adopt = NSURL(string: item)
        let avAsset = AVURLAsset(URL: url2adopt!)
        let shot = AVPlayerItem(asset: …
Run Code Online (Sandbox Code Playgroud)

avfoundation avplayer avqueueplayer swift avkit

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

参数类型'customClass.Type'不符合预期类型'NSItemProviderWriting'

iOS 11.x Swift 4

尝试使用新的drop and drag协议实现自定义类,并需要一些超级编码器帮助.我创建了这个类.

import UIKit
import MobileCoreServices

class CustomClass: NSObject, NSItemProviderWriting, NSItemProviderReading {

var image2D:Data?

static var readableTypeIdentifiersForItemProvider = [kUTTypeData as String]

static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> Self {
    return try self.init(itemProviderData: data, typeidentifier: kUTTypeData as String)
}

required init(itemProviderData data: Data, typeidentifier: String) throws {
    super.init() 
    image2D = data
}

static var writableTypeIdentifiersForItemProvider = [kUTTypeData as String]

func loadData(withTypeIdentifier typeIdentifier: String, forItemProviderCompletionHandler completionHandler: @escaping (Data?, Error?) -> Void) -> Progress? { …
Run Code Online (Sandbox Code Playgroud)

drag-and-drop compiler-errors ios swift

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

使用 Safariservices swift 如何围绕小黑匣子进行编码

使用 SFSafariViewController 效果很好,但由于某种原因,当我访问此网页 [knowitall.ch] 时,它会通过打开缩放视图来启动?有一个小黑框,我需要按下它才能获得完整的网页。

在此输入图像描述

我的代码再简单不过了。

if let url = URL(string: url2U) {
        let vc = SFSafariViewController(url: url, entersReaderIfAvailable: true)
        vc.delegate = self
        present(vc, animated: true)
    }
Run Code Online (Sandbox Code Playgroud)

如果我按下该框,我会得到正确的视图,如何对此进行编码,以便我在此处打开第二个视图?不需要黑匣子:)

在此输入图像描述

ios swift sfsafariviewcontrollerdelegate safariservices

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

在 swiftUI 中的视图数组之间切换

斯威夫特 5.x iOS 13.x

我创建了一系列骰子视图,我想在它们之间切换。为了简短起见,我在这里仅展示两个视图。我创建了一个视图数组,但我不太清楚如何在 SwiftUI 中解决它?或者实际上视图是什么类型的对象,因为它不是视图或看起来的某种视图。

import SwiftUI
import GameplayKit

let dotSize:CGFloat = 24
let diceSize:CGFloat = 128
let fieldSide:CGFloat = 32

let d6 = GKRandomDistribution.d2()

var diceViews:[Any] = [oneDotDice(),twoDotDice()]

struct ContentView: View {
  @State var showInt:Int = 1
  var body: some View {

VStack {
  if showInt == 1 {
    oneDotDice()
      .transition(AnyTransition.opacity)
      .animation(.default)
      .modifier(changeDice(showInt: self.$showInt))
  }
  if showInt == 2 {
    twoDotDice()
      .transition(AnyTransition.opacity)
      .animation(.default)
      .modifier(changeDice(showInt: self.$showInt))
  }
 }
}

struct oneDotDice: View {
  var body: some View { …
Run Code Online (Sandbox Code Playgroud)

view ios swift swiftui

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

初始化器不会覆盖其超类 Swift 2.0 中指定的初始化器

通过此 appcoder 教程构建文本到语音应用程序教程并运行 swift 1.2-> swift 2.0 功能。

演示项目中有一个类... IOS 10.11.1 下的 Xcode 7.1.1 不喜欢它,给了我错误。覆盖 init() 语句上的“初始化器不会覆盖其超类中的指定初始化器”,后面跟着错误“必须调用超类 UISlider 的指定初始化器”。

好吧,对 Swift 来说还很陌生;我开始解决这个问题的地方让我有点迷失。

class CustomSlider: UISlider {

var sliderIdentifier: Int!

override init() { <--- error here
    super.init()  <--- error here

    sliderIdentifier = 0
}


required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    sliderIdentifier = 0
}

}
Run Code Online (Sandbox Code Playgroud)

这段代码应该说什么?

user-interface speech ios avspeechsynthesizer swift

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

SwiftUI 设置将触发视图刷新的外部变量

iOS 13、Swift 5、Xcode 11.3.1

学习 SwiftUI。我把它放在一起,它有效,但它是正确的。

External.swift 中

class BlobModel: ObservableObject {
  @Published var score: String = "" 
}

var globalBlob = BlobModel()
Run Code Online (Sandbox Code Playgroud)

ContentView.swift 中

struct ContentView: View {

@ObservedObject var globalBlob:BlobModel

var body: some View {
  Text("\(globalBlob.score)")
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
      ContentView(globalBlob: globalBlob)
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在External.swift 中写入 globalBlob 时,它会更新显示。

globalBlob.score = backToString
Run Code Online (Sandbox Code Playgroud)

但是 globalBlob 是一个全局变量,这肯定是糟糕的编码实践。有没有更好的方法我应该这样做?

global-variables swift swiftui combine

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

swift 3.0中跟踪一批HTTP请求的解决方案

我正在使用在 iOS 10.0 下运行的 swift 3.0,我想制作一些在满足批处理条件时触发的代码。

for i in 0 ..< rex {
   async code, disappears and does it stuff
}
Run Code Online (Sandbox Code Playgroud)

想象一下异步代码是一个 URL 请求的集合,只要我循环它们,基本上就是背景。现在如何在“rex”请求完成后触发更多代码?

我想设置一个计时器来每秒观察和检查,但这肯定不是一个好的解决方案。

我想启动另一个线程来简单地观察正在收集的数据,并在其配额已满时触发,但这确实比计时器更糟糕。

我想在每个 URL 请求的末尾包含一个测试,看看它是否是最后一个完成的而不是使用 NotificationCenter,但这是最佳解决方案吗?

nsurl key-value-observing swift alamofire

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

在swift 4下更改导航控制器后退按钮上的字体

Swift 4,iOS 11.2.5 Xcode 9.2

尝试更改后退按钮的字体。找到了以前尝试过的解决方案,但是在我的配置(选项卡栏控制器内的导航控制器)下,似乎在Swift 4,iOS 11.2.5下都无法正常工作。

得到此代码后,第一行和最后一行有效,但中间的三行无效。

self.navigationController?.navigationBar.titleTextAttributes = [ NSAttributedStringKey.font: UIFont(name: "AvenirNextCondensed-DemiBoldItalic", size: 20)!]
navigationItem.backBarButtonItem?.setTitleTextAttributes([NSAttributedStringKey.font: UIFont(name: "AvenirNextCondensed-DemiBoldItalic", size: 20)!], for: .normal)
navigationItem.backBarButtonItem?.setTitleTextAttributes([NSAttributedStringKey.font: UIFont(name: "AvenirNextCondensed-DemiBoldItalic", size: 20)!], for: .highlighted)
navigationItem.backBarButtonItem?.setTitleTextAttributes([NSAttributedStringKey.font: UIFont(name: "AvenirNextCondensed-DemiBoldItalic", size: 20)!], for: .focused)
navigationItem.title = "Filter \(titleSelection!) [shake to clear]"
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是viewDidLoad方法。应该行吗?

fonts uinavigationcontroller ios swift

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

在Swift中反转一个字符串

需要反转一个快速的字符串,设法这样做.

var str = "Hello, playground"
let reactedText = str.characters.reversed()
let nowBackwards = Array(reactedText)
let answer = String(nowBackwards)
Run Code Online (Sandbox Code Playgroud)

而且由于我在主题中没有找到任何内容,我发布了一些积极的投票:)或者确实是更好的[更短,如同在不同的解决方案].

string swift swift3

-3
推荐指数
2
解决办法
849
查看次数