小编thi*_*ryb的帖子

将NSOperation子类化为并发和可取消

我无法找到关于如何子类化为NSOperation并发以及支持取消的良好文档.我阅读了Apple文档,但我无法找到"官方"示例.

这是我的源代码:

@synthesize isExecuting = _isExecuting;
@synthesize isFinished = _isFinished;
@synthesize isCancelled = _isCancelled;

- (BOOL)isConcurrent
{
    return YES;
}

- (void)start
{
/* WHY SHOULD I PUT THIS ?
    if (![NSThread isMainThread])
    {
        [self performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:NO];
        return;
    }
*/

    [self willChangeValueForKey:@"isExecuting"];
    _isExecuting = YES;
    [self didChangeValueForKey:@"isExecuting"];


    if (_isCancelled == YES)
    {
        NSLog(@"** OPERATION CANCELED **");
    }
    else
    {
        NSLog(@"Operation started.");
        sleep(1);
        [self finish];
    }
}

- (void)finish
{
    NSLog(@"operationfinished.");

    [self willChangeValueForKey:@"isExecuting"];
    [self willChangeValueForKey:@"isFinished"];

    _isExecuting = NO; …
Run Code Online (Sandbox Code Playgroud)

iphone nsoperation nsoperationqueue performselector

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

以编程方式从iPhone检索运营商名称

有没有办法以编程方式知道iPhone上的手机载体?

我正在寻找iPhone连接的运营商名称.

iphone cocoa-touch core-telephony

44
推荐指数
3
解决办法
3万
查看次数

使用Alamofire 4的eTag支持

我正在尝试在我的应用中启用eTag支持.我在我的快速3项目中使用Alamofire 4.

看来eTag是由Alamofire使用的URLRequest透明处理的:

NSURLCache和ETags

但它不起作用.

这是web服务器发送的http头:

headers {
    Connection = "keep-alive";
    "Content-Length" = 47152;
    "Content-Type" = "application/json";
    Date = "Tue, 06 Dec 2016 22:43:18 GMT";
    Etag = "\"ecf38288be2f23f6710cafeb1f344b8c\"";
} })
Run Code Online (Sandbox Code Playgroud)

你有什么提示吗?

非常感谢.

etag ios alamofire swift3

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

更大的UISlider确定但跟踪区域问题

我的目标是为拇指图像创建一个更大的UISlider,高度为35像素.

我将UISlider子类化并添加了方法:

- (CGRect)trackRectForBounds:(CGRect)bounds
{
    return CGRectMake(bounds.origin.x, bounds.origin.y, self.bounds.size.width, 50);
}
Run Code Online (Sandbox Code Playgroud)

然后我使用setThumbImage从我的控制器设置thum图像:

我的大拇指很好地展示了.

我遇到的问题是跟踪区域在19 px高度附近仍然是相同的,如何将它扩展到50?

谢谢

T.

iphone uislider

10
推荐指数
4
解决办法
9055
查看次数

为什么Locale.current.regionCode为零?

我试图通过使用以下方法在swift 3中获取用户的区域代码:

Locale.current.regionCode
Run Code Online (Sandbox Code Playgroud)

不幸的是regionCode是零,你知道为什么吗?我应该怎么做才能获得它?

非常感谢.

ios swift ios9

9
推荐指数
2
解决办法
2066
查看次数

subscribeNext和bindNext之间的区别

我正在使用RxSwift并想知道subscribeNext和bindNext之间有什么区别?

感谢您的输入.

ios rx-swift reactivex

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

在捏缩放后保持collectionView单元格位置

我有一个collectionView,我可以在收缩时进行缩放.

它的工作原理如下:

我在collectionView上添加了一个UIPinchGestureRecognizer,当发生捏合时,我使布局无效,迫使collectionView向委托询问新的大小.

它运作良好.

我无法解决的问题是,在挤压期间我想让我的手机保持在同一位置.就在屏幕中间的指示器下方.(见截图).

我正在考虑在捏开始时存储当前的scrollView偏移,然后当以新的大小重新显示单元格时,我计算宽度差并添加或减去contentOffset.

我有一个contentInset,以便在collectionView的中间滚动第一个单元格.

这是我的代码:

@objc func handlePinchGesture(gesture: UIPinchGestureRecognizer) {

if (gesture.state == .Began) {
    scaleStart = metrics.scale // remember current scale
    widthStart = collectionView.visibleCells()\[0\].bounds.width // get size of a cell to calulate a difference when scale will change
    originalContentOffset = collectionView.contentOffset.x // remember original content offset
}
else if (gesture.state == .Changed) {

    let newScale = metrics.normalizeScale(scaleStart * gesture.scale) // normalize scale. give 0.5, 1, 1.5, 2

    metrics.scale = newScale // global struct

    //let ZoomIn = …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview

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

***由于未捕获的异常'NSGenericException'而终止应用程序,原因是:'开始日期不能晚于结束日期!'

我正在使用Alamofire,在我的应用程序运行几个小时后,我在模拟器上遇到了这个错误.

***由于未捕获的异常'NSGenericException'而终止应用程序,原因是:'开始日期不能晚于结束日期!'

我在控制台中得到了这个堆栈跟踪:

*** First throw call stack:
(
    0   CoreFoundation                      0x0000000111186d4b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x0000000110be821e objc_exception_throw + 48
    2   Foundation                          0x00000001107f0e3c -[_NSConcreteDateInterval dealloc] + 0
    3   CFNetwork                           0x00000001131a18e8 -[__NSCFURLSessionTaskMetrics _initWithTask:] + 868
    4   CFNetwork                           0x00000001131a1497 -[NSURLSessionTaskMetrics _initWithTask:] + 100
    5   CFNetwork                           0x0000000112f77bc7 -[__NSCFURLLocalSessionConnection _tick_finishing] + 351
    6   libdispatch.dylib                   0x00000001128e3978 _dispatch_call_block_and_release + 12
    7   libdispatch.dylib                   0x000000011290d0cd _dispatch_client_callout + 8
    8   libdispatch.dylib                   0x00000001128eae17 _dispatch_queue_serial_drain + 236
    9   libdispatch.dylib                   0x00000001128ebb4b _dispatch_queue_invoke + 1073
    10  libdispatch.dylib                   0x00000001128ee385 _dispatch_root_queue_drain + 720
    11 …
Run Code Online (Sandbox Code Playgroud)

cfnetwork ios alamofire

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

iOS图表:如何将条形宽度设置为固定大小?

我希望条宽等于30像素.

barData.barWidth让我改变它,但这与图表宽度和要显示的条数成正比,这在iPad上只显示一个元素的大条形图.

你有好主意吗?

谢谢.

ios swift ios-charts

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

绘制2 UIBezierPath的差异

我想在2 UIBezierPath之间绘制差异(见截图),以便只绘制圆角,就像我在屏幕截图中看到的那样(图C)

在此输入图像描述

这是我的代码:

let context = UIGraphicsGetCurrentContext()
CGContextSaveGState(context)

let rectanglePath = UIBezierPath(rect: rect)
CGContextAddPath(context, rectanglePath.CGPath)
CGContextEOClip(context)

let roundedRectanglePath = UIBezierPath(roundedRect: productRect, byRoundingCorners: roundedCorners, cornerRadii: CGSize(width: 6, height: 6))
CGContextAddPath(context, roundedRectanglePath.CGPath)
CGContextFillPath(context)

CGContextRestoreGState(context)
Run Code Online (Sandbox Code Playgroud)

不幸的是它不起作用.我只绘制圆角黑色矩形.

你有好主意吗?

非常感谢.

core-graphics uibezierpath swift

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