小编lif*_*ott的帖子

如何确保 CAShapeLayer 调整大小以适合 UIView

我目前正在将 MKPolyline 转换为 BezierPath,然后转换为 CAShapeLayer,然后将该图层作为子图层添加到 UIView。目前正在努力确保路径不会绘制在 UIView 的边界之外。我不想遮盖并使部分路径消失,而是确保调整每个点的大小并将其放置在 UIView 的中心。

func addPathToView() {
    guard let path = createPath(onView: polylineView) else { return }
    path.fit(into: polylineView.bounds).moveCenter(to: polylineView.center).fill()
    path.lineWidth     = 3.0
    path.lineJoinStyle = .round

    guard let layer  = createCAShapeLayer(fromBezierPath: path) else { return }
    layer.path       = getScaledPath(fromPath: path, layer: layer)
    layer.frame      = polylineView.bounds
    layer.position.x = polylineView.bounds.minX
    layer.position.y = polylineView.bounds.minY

    polylineView.layer.addSublayer(layer)
}

func createCAShapeLayer( fromBezierPath path: UIBezierPath? ) -> CAShapeLayer? {
    guard let path = path else { print("No Path"); return nil } …
Run Code Online (Sandbox Code Playgroud)

scale polyline cashapelayer uibezierpath swift

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

Google Maps for iOS,swift - 如何在标记之间显示整个折线?

我想在谷歌地图视图中拟合折线.折线是通过google地图方向api中的overview_polyline获得的.

想知道如何将编码的折线转换成可以使用的东西.我需要在地图视图中拟合折线.我发现要做的就是适合显示所有标记但不显示整个折线的边界.

func fitAllMarkers()
{

    var bounds = GMSCoordinateBounds()

    for marker in markers
    {
        bounds = bounds.includingCoordinate(marker.position)
    }

    googleMapView.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(bounds))

}
Run Code Online (Sandbox Code Playgroud)

google-maps ios google-polyline swift

5
推荐指数
2
解决办法
8423
查看次数

如何在 UIView 中绘制与 MKPolyline 相同的 UIBezierPath

目前我正在 MKMapView 上跟踪我的位置。我的目标是绘制一条与从跟踪位置创建的 MKPolyline 相同的贝塞尔路径。

我尝试过的是:将所有位置坐标存储在 CLLocation 数组中。迭代该数组并将纬度/经度坐标存储在 CLLocationCooperative2D 数组中。然后确保折线位于屏幕视图中,然后转换 CGPoints 中的所有位置坐标。

目前的尝试:

@IBOutlet weak var bezierPathView: UIView! 

var locations = [CLLocation]() // values from didUpdateLocation(_:)

func createBezierPath() {
    bezierPathView.isHidden = false

        var coordinates = [CLLocationCoordinate2D]()
        for location in locations {
            coordinates.append(location.coordinate)
        }

        let polyline = MKPolyline(coordinates: coordinates, count: coordinates.count)
        fitPolylineInView(polyline: polyline)

        let mapPoints = polyline.points()

        var points = [CGPoint]()

        for point in 0...polyline.pointCount
        {
            let coordinate = MKCoordinateForMapPoint(mapPoints[point])
            points.append(mapView.convert(coordinate, toPointTo: polylineView))
        }

        print(points)

        let path = UIBezierPath(points: points)
        path.lineWidth …
Run Code Online (Sandbox Code Playgroud)

mapkit polyline ios uibezierpath swift

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

SwiftUI - 如何设置列表背景为清晰?

在 SwiftUI 中,似乎有两个选项可用于修改列表的颜色。

  1. 设置列表的行背景颜色

    List {        
      ForEach(elements, id:\.self) { element in
      }.listRowBackground(Color.blue)
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将列表的配色方案设置为“浅色”或“深色”

     List {        
       ForEach(elements, id:\.self) { element in
       }
     }.colorScheme(.light) // .dark
    
    Run Code Online (Sandbox Code Playgroud)

设置其他属性,如背景、前景色等......似乎对感兴趣的视图颜色的影响为零。

目前,我确实将列表嵌入到导航视图中,如下所示:

NavigationView {
  List {        
    ForEach(elements, id:\.self) { element in
    }
  }.colorScheme(.light) // .dark
}
Run Code Online (Sandbox Code Playgroud)

但同样,没有颜色设置或视图层次结构设置似乎能够将背景视图设置为清晰/透明,因此主视图的颜色可以作为驱动程序。相反,从实验看来,我们被迫选择白色或黑色背景。这是 swift 或 Xcode 的 bug 还是有可用的解决方案?

在此输入图像描述

beta colors ios swiftui xcode14

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

Xcode 9-无法为应用程序捆绑包ID创建IXPlaceholder

更新到Xcode 9并在模拟器上进行编译的“启动”阶段,我得到了错误:

无法为应用程序捆绑包ID创建IXPlaceholder

屏幕截图

仅在尝试启动模拟器时才会强调此问题,因为使用我的实际iPhone 6s可以正常启动。

尝试次数:

确保info.plist“捆绑包标识符”正确。它是“ $(PRODUCT_BUNDLE_IDENTIFIER)”

检查手动输入包标识符是否可行,但没有成功。

项目清理

删除衍生数据

重新启动Xcode

电脑重启

Xcode Beta已卸载

Xcode卸载并重新安装

供应配置文件将于11个月后过期

取消选中“自动管理签名”,然后再次检查

付费开发人员已有2年了,以前从未遇到过此问题。在网上搜索了没有运气的解决方案,并且注意到只有其他几个人遇到了这个问题,但没有明确的解决方案。

我应该采取什么方向解决此问题。我没有看到预配文件/证书有什么问题,但是如果有人可以向正确的方向指导我,那我可能是错的。

谢谢

xcode ios ios-simulator bundle-identifier

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

placeClient-正确使用sharedClient方法?

在阅读完Google Places文档后,placesClient给出了一个保留nil值的错误,我读了以下语句:

此类应通过[GMSPlacesClient sharedClient]方法访问。

我想知道如何实现sharedClient方法,以便基于placesID来搜索给定位置上的信息?

var placesClient: GMSPlacesClient!

func lookUpPlaceID() {
    let placeID = "ChIJPXw5JDZM6IAR4rTXaFQDGys"

    //What value should placesClient be holding if not GMSPlacesClient in order to run the search based on the placeID?

    self.placesClient.lookUpPlaceID(placeID, callback: { (place, error) -> Void in

    if let error = error {
            print("lookup place id query error: \(error.localizedDescription)")
            return
        }

        if let place = place {
            print("Place name \(place.name)")
            print("Place address \(place.formattedAddress)")
            print("Place placeID \(place.placeID)")
            print("Place attributions \(place.attributions)")
        } else {
            print("No place details …
Run Code Online (Sandbox Code Playgroud)

callback google-places-api google-maps-sdk-ios swift

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

Swift 3 核心数据 - Entity(context:) vs Entity(entity: Location.entity(), insertInto: context)

我看过 2016 年关于 Core Data 的 WWDC 视频并查看了各种教程。我已经看到了使用 Core Data Framework 创建对象以持久化到 managedObjectContext 的各种方法。

在示例中,我将其Day作为一个实体。我想Day为用户使用该应用程序的每一天创建一个新对象。

我遇到过:

第一个选项

let entity = NSEntityDescription.insertNewObject(forEntityName: "Day", into: CoreDataHelper.context)
let object = NSManagedObject(entity: entity, insertInto: CoreDataHelper.context)
Run Code Online (Sandbox Code Playgroud)

第二个选项

let object = Day(entity: Day.entity(), insertInto: CoreDataHelper.context)
Run Code Online (Sandbox Code Playgroud)

第三个选项

let object = Day(context: CoreDataHelper.context)
Run Code Online (Sandbox Code Playgroud)

并且知道人们还提出了其他可能性。

最下面的两个选项有什么区别,因为我在 WWDC 视频中没有看到第二个选项的演示。第三个选项是自动插入到 managedObjectContext 中还是应该采取某种方法将对象插入上下文中,然后使用 NSFetchedResultsController 检索所有对象。

entity core-data nsmanagedobject ios swift

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

将 CIFilter 应用于 UIImage 会导致调整大小和重新定位图像

将 CIFilter 应用于相机拍摄的照片后,拍摄的图像会缩小并重新定位。

我在想,如果我能够获得原始图像的大小和方向,它会相应地缩放并将图像视图固定到屏幕的角落。但是,这种方法没有任何改变,并且不知道我可以正确地将图像缩放到屏幕的全尺寸的方法。

func applyBloom() -> UIImage {
  let ciImage = CIImage(image: image) // image is from UIImageView

  let filteredImage = ciImage?.applyingFilter("CIBloom",
                                              withInputParameters: [ kCIInputRadiusKey: 8,
                                                                     kCIInputIntensityKey: 1.00 ])
  let originalScale = image.scale
  let originalOrientation = image.imageOrientation


  if let image = filteredImage {
    let image = UIImage(ciImage: image, scale: originalScale, orientation: originalOrientation)
    return image
  }

  return self.image
}
Run Code Online (Sandbox Code Playgroud)

图片说明:图片截取并截屏,图片缩小后留空。

在此处输入图片说明

ios cifilter ciimage swift

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

如何在swift中使用完成处理程序进行倒计时

目前我正在尝试创建一个3 ... 2 ... 1 ... Go!Go之后的倒计时类型!声明发生了一个动作但是使用完成处理程序的选项Timer.scheduleTimer没有能力从我理解的倒计时?

截至目前,我可以从3倒数,但不知道如何在Go中使计时器无效!并执行一个动作

var seconds = 3
var countDownTimer = Timer()

func startCountDown() {
  countDownTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(TrackActivityVC.updateTimer), userInfo: nil, repeats: true)
}

func updateTimer() {

  seconds -= 1
  print(seconds)
}

// Not sure how to use this code to create a countdown, as it doesn't seem possible with this method

Timer.scheduledTimer(withTimeInterval: someInterval, repeats: false) {

}
Run Code Online (Sandbox Code Playgroud)

因此问题是如何使用完成处理程序使倒计时器.

timer ios swift

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

提示用户在被拒绝后允许位置服务而不会崩溃

我面临的问题是,当我按下UIButton时 - 需要位置服务来启动操作.但是,如果用户在应用程序的初始启动时拒绝定位服务 - 应用程序将崩溃.

我试图找到一种方法来实现CLAuthorizationStatus .Denied但我似乎无法找到一种方法.我似乎可以实现的唯一代码是didChangeAuthorizationStatus,它只在应用程序的首次启动时启动请求.

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus)
{
    if status == .AuthorizedAlways || status == .AuthorizedWhenInUse
    {
        manager.startUpdatingLocation()
    }
    else
    {
        manager.requestWhenInUseAuthorization()
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我按下UIButton发送API请求,如果位置服务被拒绝,应用程序将崩溃.

我的问题是如何在按钮的IBAction中实现一个方法,该方法将指导用户转到他们的设置并启用位置服务.:)

core-location cllocationmanager ios swift location-services

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

UITextView - 从 UITableViewCell() 中选择的所有文本开始编辑

我有一个带有对象的 tableView,该对象TaskCellUITableViewCell

textView是在TaskCell一切工作正常,除了我不能让这行代码的文本视图,选择所有文字,以便用户可以立即覆盖的文本,如果他们愿意的话。就像您在按住文本后点击“全选”一样。

textView.selectedTextRange = textView.textRange(from: textView.beginningOfDocument, to: textView.endOfDocument)
Run Code Online (Sandbox Code Playgroud)

_

// All code relating to textView
class TaskCell: UITableViewCell {

  @IBOutlet weak var textView: UITextView! { didSet { initTextView() } }

  fileprivate func initTextView() {
    textView.delegate = self
  }
}

extension TaskCell: UITextViewDelegate {
  func textViewDidBeginEditing(_ textView: UITextView) {
    textView.selectedTextRange = textView.textRange(from: textView.beginningOfDocument, to: textView.endOfDocument)
  }
}


// class ListViewController: ViewController, UITableViewDataSource, UITableViewDelegate
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { …
Run Code Online (Sandbox Code Playgroud)

uitextview uitextviewdelegate ios swift

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

谷歌的地方为iOS空引用

我一直在使用谷歌地图sdk和地方api完全正常.昨天我的代码运行得很好.但今天早上醒来,做了一些修改,然后遇到了一个问题的编译雪球,似乎很容易解决,但花了几个小时试图弄清楚发生了什么.我正在尝试开发一个iPhone应用程序.

我已经回去了,在开发者控制台中创建了一个"新项目",重新生成了一个新的iOS密钥.在info.plist中输入新的包ID,在委托文件中输入新的api密钥,并在url的搜索参数内输入.

我正在使用alamofire和swiftyjson来解析数据

但仍然得到同样的问题.

2016-01-28 13:15:55.683适用于iOS版的Google Maps SDK:1.11.21919.0

{"error_message":"此IP,站点或移动应用程序无权使用此API密钥.从IP地址"myIPAddress"收到请求,空引用","结果":[

],"status":"REQUEST_DENIED","html_attributions":[

]}

在此输入图像描述

func downloadRestaurantDetails(completed: DownloadComplete) {
    let URL_Search = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?"
    let API_iOSKey = "My iOS API Key"

    let urlString = "\(URL_Search)location=\(clLatitude),\(clLongitude)&radius=\(searchRadius)&types=\(searchType)&key=\(API_iOSKey)"
    let url = NSURL(string: urlString)!

    Alamofire.request(.GET,url).responseJSON { (response) -> Void in
        if let value  = response.result.value {
            let json = JSON(value)
            print(json)

            if let results = json["results"].array {
                for result in results {
                    if let placeIDs = result["place_id"].string {
                        self.placeIDArray.append(placeIDs)
                    }
                }
            }
        }

        completed()

    }
}
Run Code Online (Sandbox Code Playgroud)

debugging google-maps ios google-places-api swift

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

如何在C中将内存分配给字符串数组-malloc错误

问题:我想为固定大小的字符串数组的元素分配内存,但是,我遇到崩溃的机会是75%。

那是我的程序完美运行的25%的时间,但是错误是我以前从未遇到过的错误

#define PACKAGE_COUNT 60
#define MAX_COUNT     5

const char *colors[] = { "blue", "red", "yellow", "purple", "orange" };

char **generatePackage() {


  char **generatedPackage = malloc(PACKAGE_COUNT);
  int randomIndex         = 0;

  for (int i = 0; i <= PACKAGE_COUNT; ++i) {

    randomIndex         = rand() / (RAND_MAX / MAX_COUNT + 1);
    generatedPackage[i] = malloc(sizeof(char) * sizeof(colors[randomIndex])); 
    // ERROR

    strcpy((generatedPackage[i]), colors[randomIndex]);

    // printf("generatePackage - %d: %s \n", i + 1, generatedPackage[i]);
  }

  return generatedPackage;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

c malloc runtime-error

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