小编Thy*_*raz的帖子

如何在不推荐使用CaptiveNetwork后在iOS9中获取Wifi SSID,并且已经阻止了对Wifi名称的调用

直到今天,我使用CaptiveNetwork接口显示当前连接的Wifi的名称.iOS 9 Prerelease参考已经说过,CaptiveNetwork方法现在被删除了,但它们仍然在开始时工作.

有了最新版本,Apple似乎已经阻止了这个电话(可能是出于隐私问题?).

有没有其他方法来获得当前Wifi的名称?

这就是我今天获得SSID的方式,但你现在只获得nil:

#import <SystemConfiguration/CaptiveNetwork.h>

NSString *wifiName = nil;  
NSArray *interFaceNames = (__bridge_transfer id)CNCopySupportedInterfaces(); 

for (NSString *name in interFaceNames) { 
    NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)name); 

    if (info[@"SSID"]) { 
        wifiName = info[@"SSID"]; 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c ios ios9

35
推荐指数
4
解决办法
4万
查看次数

如何识别是否没有从iCloud完全下载PHAsset(所以我需要再次使用options.networkAccessAllowed请求)

文档说:

PHImageResultIsInCloudKey:一个布尔值,指示照片资产数据是存储在本地设备上还是必须从iCloud下载.(NSNumber)如果是,则不提供图像,因为必须从iCloud下载资产数据.要下载数据,请提交另一个请求,并为networkAccessAllowed选项指定YES.

但是当资产存储在iCloud照片库中时,此键始终为YES,即使已将其完全下载到设备中(在我的应用程序中下载,也在照片应用程序中打开).

如果图像不可用,我想让用户可以下载它(但不要自动执行,至少在没有Wifi的情况下不这样做).

那么如何确定图像是否需要下载?

更奇怪的是:当我的结果块 requestImageForAsset:targetSize:contentMode:options:resultHandler: 被调用需要下载的图像时,我会在传递较小且降级的版本之后使用requestedImage == nil进行最后一次调用.

在这种情况下降级为NO,即使我没有图像,仍然必须从iCloud下载图像,因为到目前为止,只有照片应用程序中的一个小缩略图在本地可用.

我在具有不同iOS 8版本(8.1.x,8.2 beta,8.3 beta)的iPhone和iPad上进行了测试,行为总是相同的.

在Photos应用程序中打开图像后,结果处理程序的最后一次调用具有完整大小的图像,但PHImageResultIsInCloudKey仍为YES.

这是我如何请求图像的一些代码:

PHImageRequestOptions *options = [[PHImageRequestOptions alloc]init];
options.deliveryMode = PHImageRequestOptionsDeliveryModeOpportunistic;
options.networkAccessAllowed = NO;

[self.imageManager requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeAspectFill options:options resultHandler:^(UIImage *requestedImage, NSDictionary *info) {
    // Checking for requestedImage and the info keys here
    // When a full sized image was loaded, the result of PHImageResultIsInCloudKey is still YES
    // When a full sized image couldn't be loaded cause it's in the cloud, isDegraded is NO and …
Run Code Online (Sandbox Code Playgroud)

ios photokit phasset

19
推荐指数
2
解决办法
9286
查看次数

使用UIGradientLayer作为layer.mask淡出滚动视图的底部/顶部 - >掩模的重新定位落后

我有一个UIScrollView的子类,应该在顶部/底部淡出.(从opaque到clearColor,就像DetailView底部的Notes.app一样.)

所以我添加了一个UIGradientLayer作为scrollview.layer.mask,它似乎工作正常,直到我第一次滚动:

    CAGradientLayer *mask = [CAGradientLayer layer];
    mask.locations = [NSArray arrayWithObjects:
                      [NSNumber numberWithFloat:0.0],
                      [NSNumber numberWithFloat:0.1],
                      [NSNumber numberWithFloat:0.9],
                      [NSNumber numberWithFloat:1.0],
                      nil];

    mask.colors = [NSArray arrayWithObjects:
                   (__bridge id)[UIColor clearColor].CGColor,
                   (__bridge id)[UIColor whiteColor].CGColor,
                   (__bridge id)[UIColor whiteColor].CGColor,
                   (__bridge id)[UIColor clearColor].CGColor,
                   nil];

    mask.frame = self.scrollview.bounds;
    // vertical direction
    mask.startPoint = CGPointMake(0, 0); 
    mask.endPoint = CGPointMake(0, 1);

    self.scrollview.layer.mask = mask;
Run Code Online (Sandbox Code Playgroud)

但是当我滚动时,屏幕会滚动内容而不是粘在屏幕位置上,以便很好地淡出内容.

我通过在scrollviews layoutSubviews中重新定位掩码来解决这个问题:

-(void)layoutSubviews {
    [super layoutSubviews];

    CGRect layerMaskFrame = self.layer.mask.frame;
    layerMaskFrame.origin = [self convertPoint:self.bounds.origin toView:self];

    self.layer.mask.frame = layerMaskFrame;
}
Run Code Online (Sandbox Code Playgroud)

但是当我滚动时,现在面具的移动有点延迟了.看起来掩码的帧设置有延迟和动画.

两者,面具的滚动和移动都是平滑的,所以我不认为这是一个太慢的硬件问题.

但那怎么可能呢?不应该从动画中调用layoutSubviews,我立即在那里设置新框架......

iphone objective-c ios

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

标签 统计

ios ×3

objective-c ×2

cocoa-touch ×1

ios9 ×1

iphone ×1

phasset ×1

photokit ×1