小编Evg*_*kan的帖子

地图的离线缓存

我非常需要为我的应用做离线地图,因为它主要是为泰国制作的,因为泰国通常很难连接互联网.我现在正在使用OpenStreetMap我的MKTileOverlay但是在实现它以供离线使用时遇到问题.我找到了一个教给子类的教程MKTileOverlay.所以,在我ViewController的地图上我有:

 - (void)viewWillAppear:(BOOL)animated {

    CLLocationCoordinate2D coord = {.latitude =  15.8700320, .longitude =  100.9925410};
    MKCoordinateSpan span = {.latitudeDelta =  3, .longitudeDelta =  3};
    MKCoordinateRegion region = {coord, span};
    [mapView setRegion:region];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"Map";
    NSString *template = @"http://tile.openstreetmap.org/{z}/{x}/{y}.png";
    self.overlay = [[XXTileOverlay alloc] initWithURLTemplate:template];
    self.overlay.canReplaceMapContent = YES;
    [mapView addOverlay:self.overlay level:MKOverlayLevelAboveLabels];
}

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id)overlay {

    return [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay];
}
Run Code Online (Sandbox Code Playgroud)

在我的子类中MKTileOverlay,我有:

- (NSURL *)URLForTilePath:(MKTileOverlayPath)path { …
Run Code Online (Sandbox Code Playgroud)

openstreetmap mapkit offline-caching ios mktileoverlay

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

如何在ConstraintLayout中使用创建者

ConstraintLayout我们有新类型的参数creator:layout_constraintTop_creatorlayout_constraintRight_creator 如何使用它?

android android-constraintlayout

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

FB登录使用Swift 3不返回任何值,并且在成功登录后不会将用户返回到App

我正在使用iOS 10 Swift 3整合FB Login.我已经完成了Facebook文档中的所有步骤.现在的问题是,在成功登录后,它不会返回任何值,也不会让用户返回应用程序.

注意:同样适用于Swift 2.

ios facebook-ios-sdk swift swift3 ios10

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

有条件地在Swift中导入基于iOS版本的框架(如Speech)?

有没有办法Swift根据运行时iOS版本有条件地导入框架?

特别是,我有一个部署目标为的应用程序iOS 8.Apple Speech如果在运行时可用,我想在应用程序中使用新框架.我知道#available(iOS 10, *)代码部分的@available(iOS 10, *)指令,以及可用于整个类的指令.因此,我可以轻松避免执行任何使用Speech框架的代码.但是在包含使用Speech的类的文件中,我需要"import Speech"语句,并且这两个指令都不能在那里使用.我发现即使我@available(iOS 10, *)在整个班级都有指令,当我在iOS 9设备上运行我的应用程序时,它会在启动时被杀死

"dyld: Library not loaded: /System/Library/Frameworks/Speech.framework/Speech".
Run Code Online (Sandbox Code Playgroud)

我是否遗漏了某些内容,或者是否只能在部署目标为10的应用中使用Speech框架?

ios swift

10
推荐指数
2
解决办法
3047
查看次数

iPhone会挑选哪个切片

我有一个.ipa具有arm64armv它7片.如果我上同时支持的iDevice运行arm64armv7哪个片将被运行时采摘?

我可以通过打印NSLog或某种方式来了解某个地方运行时已选择切片arm64吗?

architecture iphone armv7 ios arm64

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

PFQuery FindObjectsInBackground返回0

在我的UIViewController我试图查询我的解析服务器,但我不断得到它的返回0,虽然我知道100%这个类确实有对象.有什么想法吗?

 PFQuery *query = [PFQuery queryWithClassName:@"General"];

 int i;
 for (i = 0; i < [follows count]; i++) {
        [query whereKey:@"Session" containedIn:follows];
 }
 query.cachePolicy = kPFCachePolicyCacheThenNetwork;

 [query orderByDescending:@"createdAt"];
 [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
 // it never gets here...
 NSLog(@"OBJECTS%@", objects);
 if (!error) {
     NSLog(@"Successfully retrieved %lu objects.", (unsigned long)objects.count);
     for (PFObject *object in objects) {
         NSLog(@"%@", object.objectId);
     }

     // [self gotoMain];
 } else {
       NSLog(@"Error: %@ %@", error, [error userInfo]);
   }
 }];
Run Code Online (Sandbox Code Playgroud)

它告诉我在控制台中成功检索0个对象没有错误.

xcode ios parse-platform pfquery pfobject

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

如何以编程方式将视图设置为正面/背面?

我正在开发一个使用UIViews作为文本背景的应用程序.我把观点放在了文本背后,storyboard但由于某些原因,有些似乎仍然在文本的前面.有没有办法以编程方式将这些视图发送到后面?这是我正在谈论的截图图片

xcode uikit ios uiview-hierarchy swift

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

如何获取 UTType 图像、音频和视频的所有扩展

有没有办法将所有不同的UTType 扩展类型获取为字符串?我专门需要它们来处理图像、音频和视频。

我遵循了这个答案,但它没有给我所有的扩展

var types = [String]()

let utiTypes = [kUTTypeImage, kUTTypeMovie, kUTTypeVideo, kUTTypeMP3, kUTTypeAudio, kUTTypeQuickTimeMovie, kUTTypeMPEG, kUTTypeMPEG2Video, kUTTypeMPEG2TransportStream, kUTTypeMPEG4, kUTTypeMPEG4Audio, kUTTypeAppleProtectedMPEG4Audio, kUTTypeAppleProtectedMPEG4Video, kUTTypeAVIMovie, kUTTypeAudioInterchangeFileFormat, kUTTypeWaveformAudio, kUTTypeMIDIAudio, kUTTypeLivePhoto, kUTTypeTIFF, kUTTypeGIF, kUTTypeQuickTimeImage, kUTTypeAppleICNS]

for type in utiTypes {
            
    let str = String(type)
            
    guard let utiStr = fileExtension(for: str) else { continue }

    types.appent(utiStr)
}

dump(types)
Run Code Online (Sandbox Code Playgroud)

结果是

15 elements // there are really 21 types
  - "jpeg"
  - "png"
  - "mov"
  - "mpg"
  - "m2v"
  - "ts" …
Run Code Online (Sandbox Code Playgroud)

ios swift uidocumentpickerviewcontroller mobilecoreservices uttype

8
推荐指数
2
解决办法
9617
查看次数

iOS Swift在哪里存储用户登录数据或OAuth令牌?

事情并不像在用户手机上存储登录数据的最佳做法那样清晰.有人建议应将数据userID = 123loggedIn = true类型数据存储在NSUSerDefaults数据中.然而根据我的理解,根据这篇文章,https://www.andyibanez.com/nsuserdefaults-not-for-sensitive-data/可以很容易地操作这些数据.

所以问题是:当用户浏览各种屏幕时,持久登录数据的最佳方法是什么.需要被存储的唯一数据是userIDOAuth Token有关于这个用户的帐户状态的一些其他的自定义位一起.存储此数据的最安全方法是什么,以确保在从服务器提取数据时,有人不能简单地伪造成另一个用户?

问候,迈克尔

nsuserdefaults ios swift

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

在后台监控iBeacon信标

我一直在开发iOS应用程序并玩弄苹果CoreLocationiBeacon技术.到目前为止,我使用了三个具有不同UUID的信标.一切都很好,直到我决定在我的应用程序中添加更多信标.只有那时我遇到了奇怪的问题.有人说,一个应用程序可以在后台监视多达20个信标区域 - 但在我的特定情况下,这个数字似乎是3.我尝试了不同的方法,没有任何效果.当我在他们的数组中改变信标时,结果就像我预期的那样 - 只有前三个信标区域被触发,didEnterRegiondidExitRegion应用程序处于后台的事件.当它在前景时没有应用.

请考虑一下:

  1. 我有一组自定义信标对象(从API消耗)
  2. 对于每个自定义信标对象,我创建一个CLBeaconRegion类似的实例:

    let beaconRegion = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: region.uuid)!, identifier: region.uuid)
    
    beaconRegion.notifyOnEntry = true
    beaconRegion.notifyOnExit = true
    beaconRegion.notifyEntryStateOnDisplay = true
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后我将该实例传递给CLLocationManager的startMonitoringForRegion方法,如下所示:

    locationManager.startMonitoringForRegion(beaconRegion)

当循环通过CLLocationManager的monitoredRegions方法响应时,我获得了我期望的所有信号区域regionState 2(外部)

  1. 最重要的是,我已经添加:

    NSLocationAlwaysUsageDescription

到应用程序的Info.plist

locationManager.requestAlwaysAuthorization()
Run Code Online (Sandbox Code Playgroud)

到ViewController的viewDidLoad方法

不过,didEnterRegiondidExitRegion我在任何我开始监测前三灯塔地区的范围是只触发.

谢谢,

Piotr Czarnoleski

core-location ios ibeacon swift

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