小编Axe*_*min的帖子

如何使UILabel显示轮廓文字?

我想要的只是在我的白色UILabel文本周围的一个像素黑色边框.

我使用下面的代码完成了UILabel的子类化,我从几个相关的在线示例中笨拙地拼凑而成.并且它工作但它非常非常慢(除了在模拟器上)并且我无法让它垂直居中文本(因此我暂时硬编码了最后一行的y值).哈啊!

void ShowStringCentered(CGContextRef gc, float x, float y, const char *str) {
    CGContextSetTextDrawingMode(gc, kCGTextInvisible);
    CGContextShowTextAtPoint(gc, 0, 0, str, strlen(str));
    CGPoint pt = CGContextGetTextPosition(gc);

    CGContextSetTextDrawingMode(gc, kCGTextFillStroke);

    CGContextShowTextAtPoint(gc, x - pt.x / 2, y, str, strlen(str));
}


- (void)drawRect:(CGRect)rect{

    CGContextRef theContext = UIGraphicsGetCurrentContext();
    CGRect viewBounds = self.bounds;

    CGContextTranslateCTM(theContext, 0, viewBounds.size.height);
    CGContextScaleCTM(theContext, 1, -1);

    CGContextSelectFont (theContext, "Helvetica", viewBounds.size.height,  kCGEncodingMacRoman);

    CGContextSetRGBFillColor (theContext, 1, 1, 1, 1);
    CGContextSetRGBStrokeColor (theContext, 0, 0, 0, 1);
    CGContextSetLineWidth(theContext, 1.0);

    ShowStringCentered(theContext, rect.size.width / 2.0, 12, [[self text] cStringUsingEncoding:NSASCIIStringEncoding]);
} …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch core-graphics objective-c ios

102
推荐指数
7
解决办法
6万
查看次数

UITableView重新加载部分

我想只重新加载一个部分而不是整个表.有什么方法吗UITableView

[tableView reloadData]用于加载全表.
我想知道如何只加载一个部分,因为我在表中有大量的行.

iphone uitableview

40
推荐指数
5
解决办法
7万
查看次数

iOS 8照片框架.访问照片元数据

我期待在更换ALAssetsLibraryPhotos框架在我的应用程序.

我可以很好地检索照片,集合和资源(甚至可以将它们写回来),但是看不到任何地方可以访问照片的元数据({Exif},{TIFF},{GPS}等字典,等等...).

ALAssetsLibrary有办法.UIImagePickerController有办法.Photos也必须有办法.

我看到它PHAsset有一个location属性可以用于GPS词典,但我希望访问所有的元数据,包括面部,方向,曝光,ISO和吨更多.

目前苹果处于测试阶段2.也许还有更多的API需要推出?

UPDATE

没有官方的方法只使用Photos API来做到这一点.

但是,您可以在下载图像数据后读取元数据.有几个方法来做到这一点使用两种PHImageManagerPHContentEditingInput.

PHContentEditingInput方法需要较少的代码,不需要您导入ImageIO.我把它包装在PHAsset类别中.

iphone uiimageview ios alassetslibrary ios8

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

通过VPN连接Swift发送所有流量

我正在创建一个连接到VPN服务器的应用程序.我已经弄清楚如何做到这一点,但需要能够通过连接发送所有流量.有没有可以做到这一点的代码?到目前为止,我尝试过:

let manager: NEVPNManager = NEVPNManager.sharedManager()
var p = NEVPNProtocolIPSec()
manager.`protocol` = p

let pw = ""

p.username = ""
p.passwordReference = pw.dataUsingEncoding(NSUTF8StringEncoding)
p.serverAddress = ""
p.authenticationMethod = NEVPNIKEAuthenticationMethod.SharedSecret
//p.sharedSecretReference = getPasscodeNSData("vpnSharedSecret")
p.useExtendedAuthentication = true
p.disconnectOnSleep = false
Run Code Online (Sandbox Code Playgroud)

ios swift

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

如何在UIWebView中检测和处理HTTP错误代码?

我想在收到HTTP错误404等时通知用户.我怎么能检测出来?我已经尝试过了

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
Run Code Online (Sandbox Code Playgroud)

但是当我收到404错误时它没有被调用.

iphone objective-c uiwebview nserror ios

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

如何使用Apple Map Kit实现地址的自动完成

我想自动填写用户的地址,与google api在此链接中提供的地址相同:

https://developers.google.com/maps/documentation/javascript/places-autocomplete?hl=en

如何使用Apple地图套件实现相同的功能?

我试过使用Geo Coder,我写了这个例子:

@IBAction func SubmitGeoCode(sender: AnyObject) {

    let address = "1 Mart"
    let coder = CLGeocoder()

    coder.geocodeAddressString(address) { (placemarks, error) -> Void in

        for placemark in placemarks! {

            let lines = placemark.addressDictionary?["FormattedAddressLines"] as? [String]

            for addressline in lines! {
                print(addressline)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,结果非常令人失望.

任何可用于实现此类功能的Apple API,或者我应该使用google api?

谢谢

geocoding ios swift

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

使用Console.app更改iOS 10(统一日志记录)上的日志级别

这很简单但是:如果我尝试使用iOS10的新"统一记录和活动跟踪"API,我究竟如何设置我在Console.app中看到的日志消息的级别?

换句话说,如果我在iOS上运行代码如下:

fileprivate let logger = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "mycategory")

fileprivate func logv(_ s:String) {
    os_log("%@",log:logger,type:.info,s)
}
Run Code Online (Sandbox Code Playgroud)

那么在Console.app中查看已记录的消息需要做什么?默认情况下,只.error显示类型的日志消息.

我想知道如果我在设备上运行代码而不是在模拟器中运行代码.

有关:

Xcode 8 - os_log_debug和os_log_info日志不会显示在新的Mac控制台上(统一日志记录)

logging ios ios10

17
推荐指数
2
解决办法
2399
查看次数

嵌套在类中的Swift协议

我想在我的类中嵌套一个协议来实现委托模式,如下所示:

class MyViewController : UIViewController {

    protocol Delegate {
        func eventHappened()
    }

    var delegate:MyViewController.Delegate?

    private func myFunc() {
        delegate?.eventHappened()
    }
}
Run Code Online (Sandbox Code Playgroud)

但是编译器不会允许它:

声明仅在文件范围内有效

我可以通过MyViewControllerDelegate在类范围之外声明来轻松地使它工作.
我的问题是为什么会有这样的限制?

swift swift-protocols

15
推荐指数
2
解决办法
6904
查看次数

如何象征Apple收到的.txt格式的崩溃报告而不是.crash格式

我的应用程序被Apple拒绝,我收到了.txt格式的崩溃报告,而不是.crash格式.

我如何表示或阅读崩溃报告?

xcode crash-reports symbolicate symbolicatecrash

11
推荐指数
2
解决办法
5225
查看次数

Apple MapKit 3D天桥

是否有任何公共iOS 8 API可用于实现3D天桥或至少3D视图,如下面的Apple Maps App屏幕截图所示?

在此输入图像描述

更新

经过以下建议我已经完成了以下代码:

import UIKit
import MapKit

class ViewController: UIViewController {

    @IBOutlet weak var mapView: MKMapView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        mapView.showsBuildings = true
        let eiffelTowerCoordinates = CLLocationCoordinate2DMake(48.85815,2.29452)
        mapView.region = MKCoordinateRegionMakeWithDistance(eiffelTowerCoordinates, 1000,100)

        mapView.mapType = MKMapType.Standard

        // 3D Camera
        let mapCamera = MKMapCamera()
        mapCamera.centerCoordinate = eiffelTowerCoordinates
        mapCamera.pitch = 45
        mapCamera.altitude = 500
        mapCamera.heading = 45

        // Set MKmapView camera property
        self.mapView.camera = mapCamera
    } …
Run Code Online (Sandbox Code Playgroud)

mapkit ios

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