我想要的只是在我的白色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) 我想只重新加载一个部分而不是整个表.有什么方法吗UITableView?
[tableView reloadData]用于加载全表.
我想知道如何只加载一个部分,因为我在表中有大量的行.
我期待在更换ALAssetsLibrary与Photos框架在我的应用程序.
我可以很好地检索照片,集合和资源(甚至可以将它们写回来),但是看不到任何地方可以访问照片的元数据({Exif},{TIFF},{GPS}等字典,等等...).
ALAssetsLibrary有办法.UIImagePickerController有办法.Photos也必须有办法.
我看到它PHAsset有一个location属性可以用于GPS词典,但我希望访问所有的元数据,包括面部,方向,曝光,ISO和吨更多.
目前苹果处于测试阶段2.也许还有更多的API需要推出?
UPDATE
没有官方的方法只使用Photos API来做到这一点.
但是,您可以在下载图像数据后读取元数据.有几个方法来做到这一点使用两种PHImageManager或PHContentEditingInput.
该PHContentEditingInput方法需要较少的代码,不需要您导入ImageIO.我把它包装在PHAsset类别中.
我正在创建一个连接到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) 我想在收到HTTP错误404等时通知用户.我怎么能检测出来?我已经尝试过了
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
Run Code Online (Sandbox Code Playgroud)
但是当我收到404错误时它没有被调用.
我想自动填写用户的地址,与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?
谢谢
这很简单但是:如果我尝试使用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显示类型的日志消息.
我想知道如果我在设备上运行代码而不是在模拟器中运行代码.
有关:
我想在我的类中嵌套一个协议来实现委托模式,如下所示:
class MyViewController : UIViewController {
protocol Delegate {
func eventHappened()
}
var delegate:MyViewController.Delegate?
private func myFunc() {
delegate?.eventHappened()
}
}
Run Code Online (Sandbox Code Playgroud)
但是编译器不会允许它:
声明仅在文件范围内有效
我可以通过MyViewControllerDelegate在类范围之外声明来轻松地使它工作.
我的问题是为什么会有这样的限制?
我的应用程序被Apple拒绝,我收到了.txt格式的崩溃报告,而不是.crash格式.
我如何表示或阅读崩溃报告?
是否有任何公共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) ios ×7
iphone ×4
swift ×3
objective-c ×2
cocoa-touch ×1
geocoding ×1
ios10 ×1
ios8 ×1
logging ×1
mapkit ×1
nserror ×1
symbolicate ×1
uiimageview ×1
uitableview ×1
uiwebview ×1
xcode ×1