我经常看到UIControlState.normal用过,例如设置一个将在所有控制状态中使用titleColor的UIButton对象,正如UIButton. setTitleColor文档所说:
通常,如果未为状态指定属性,则默认使用正常值.如果未设置正常值,则属性默认为系统值.因此,您至少应该设置正常状态的值.
但我也发现UIControlState.init()被使用,例如以下行:
UIButton.setTitleColor(UIColor, for: UIControlState())
Run Code Online (Sandbox Code Playgroud)
想知道它有何不同,提前谢谢!
我是Swift和iOS编程的新手,我在Swift中遇到了一个关于带有占位符和多元支持的动态字符串的问题
例如,如果您有一个多语言应用程序,并且不想硬编码字符串和标签和消息等...
我可以在Android中轻松地使用以下代码在不同文件夹中的XML文件中执行此操作,其中android设备将根据当前区域设置查找字符串:
<string name="name">You have %2$d new messages.</string>
<plurals name="name">
<item quantity="one">You have a new message.</item>
<item quantity="other">You have %2$d new messages.</item>
</plurals>
Run Code Online (Sandbox Code Playgroud)
借助上述XML和以下Java:
res.getString(R.string.name, mailCount)
res.getQuantityString(R.plurals.name, mailCount, mailCount)
Run Code Online (Sandbox Code Playgroud)
这项工作是在Android中完成的,我正在寻找与Swift(iOS)相对应的解决方案
我最近从旧版 Mapbox SDK(版本 1.6)更新到最新的 Mapbox iOS SDK 3.x。
在新版本中,我无法弄清楚如何将 Mapbox MGLMapView 缩放到给定的半径(以公里为单位)以适合屏幕。
在旧版本(版本 1.6)中,RMMapView.zoomWithLatitudeLongitudeBoundsSouthWest方法的工作如下:
func centerAndZoom(center: CLLocationCoordinate2D, kilometers: Float) {
let meters = Double(kilometers * 1000)
let region = MKCoordinateRegionMakeWithDistance(center, meters / 2, meters / 2);
let northEastLat = center.latitude - (region.span.latitudeDelta / 2);
let northEastLon = center.longitude + (region.span.longitudeDelta / 2);
let northEast = CLLocationCoordinate2D(latitude: northEastLat, longitude: northEastLon)
let southEastLat = center.latitude + (region.span.latitudeDelta / 2);
let southEastLon = center.longitude - (region.span.longitudeDelta / 2);
let southEast = …Run Code Online (Sandbox Code Playgroud) 我正在使用这个ios-sdk-examples> ClusteringExample来聚类标记,除了这个例子,我需要为每个标记显示不同的UIImages(意味着每个标记都有自己的UIImage),我试过以下:
let source = MGLShapeSource(identifier: "clusteredPorts", features: self.features, options: [.clustered: true, .clusterRadius: 22])
style.addSource(source)
// remoteImages is an array of tuple [(image: UIImage, key: String)]
remoteImages.forEach { item in
mapView.style!.setImage(item.image, forName: item.key)
let layer = MGLSymbolStyleLayer(identifier: item.key, source: source)
layer.iconImageName = MGLStyleValue(rawValue: item.key as NSString)
layer.predicate = NSPredicate(format: "%K != YES", "cluster")
style.addLayer(layer)
}
Run Code Online (Sandbox Code Playgroud)
但是上面的代码显示了所有非聚集标记的单个UIImage(附带截图),我需要指定这些自定义图像的任何想法吗?
Update-1: self.features是一个数组[MGLPointFeature],每个数组MGLPointFeature只有以下内容:
let feature = MGLPointFeature()
feature.coordinate = CLLocationCoordinate2D(latitude: LatValue, longitude: LngValue)
feature.attributes = ["id": IntegerValue]
Run Code Online (Sandbox Code Playgroud)
我已经使用Int.random()方法和arc4random_uniform()进行了数字生成速度测试。
两项测试均在macOS控制台中运行,并将构建配置设置为release。以下是我用于测试的代码。
public func randomGen1() {
let n = 1_000_000
let startTime = CFAbsoluteTimeGetCurrent()
for i in 0..<n {
_ = arc4random_uniform(10)
}
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
print(timeElapsed)
}
public func randomGen2() {
let n = 1_000_000
let startTime = CFAbsoluteTimeGetCurrent()
for i in 0..<n {
_ = Int.random(in: 0..<10)
}
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
print(timeElapsed)
}
Run Code Online (Sandbox Code Playgroud)
我得到的时间是
0.029475092887878418(用于arc4random_uniform(10))
0.20298802852630615(用于Int.random(in:0 .. <10))
为什么Int.random()这么慢?
有没有优化的方法?
有没有更快的方法快速生成随机数?
第一次看到这样的三元表达式:
var somevar = b1 ? b2 ? b3 : b4 : b5 ? b6 : b7 ? b8 : b9 ? b10 : b11
Run Code Online (Sandbox Code Playgroud)
很难理解并将其转换为:
if (b1) {
} else if (bx) {
}
Run Code Online (Sandbox Code Playgroud)
我到处寻找,似乎无法找到答案.
我正在编写一个iPhone应用程序,我想要一个文本字段,用户可以在键盘中添加数字并即时添加它们,即用户可能输入"1.5 + 2.4 + 6.3 + .063"并且当用户键入其他内容时数字和加号立即显示总数.
问题是123在用户键入+号后开始并将键盘保持在模式中(使用电子邮件键盘,因为它在同一视图上有数字和加号).
如何在_123屏幕上启动电子邮件键盘并将其保留在那里?
谢谢!麦克风
我得到了一个中心CGPoint和半径Float,我需要在圆圈周围得到N个点,例如在下面的图像中如何得到12个点对应的红点.
这是我不完整的功能:
func getCirclePoints(centerPoint point: CGPoint, and radius: CGFloat, n: Int) [CGPoint] {
let result: [CGPoint] = stride(from: 0.0, to: 360.0, by: CGFloat(360 / n)).map {
let bearing = $0 * .pi / 180
// NO IDEA WHERE TO MOVE FURTHER
}
return result
}
getCirclePoints(centerPoint: CGPoint(x: 160, y: 240), radius: 120.0, n: 12)
Run Code Online (Sandbox Code Playgroud) 我有一个数组[CLLocationCoordinate2D],我想在MKMapView所有这些坐标周围画一个圆圈。
我已经成功地围绕一个圆圈画了一个圆,CLLocationCoordinate2D如下所示:
let coordinate = CLLocationCoordinate2D(latitude: 53, longitude: 27)
self.mapView.add(MKCircle(center: coordinate, radius: 100))
extension MapViewController: MKMapViewDelegate {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
guard overlay is MKCircle else { return MKOverlayRenderer() }
let circle = MKCircleRenderer(overlay: overlay)
circle.strokeColor = UIColor.red
circle.fillColor = UIColor(red: 255, green: 0, blue: 0, alpha: 0.1)
circle.lineWidth = 1
return circle
}
}
Run Code Online (Sandbox Code Playgroud)
如何绘制一个包围/包含所有坐标的圆?,如下所示:
我有一个水平分页UIScrollview,以下是我的VFL前导/尾随约束H:|-0-[ScrollView]-0-|(与superview对齐).
我safeAreaInsets在iPhone X中左/右横向.
这是一个错误吗?或者我错过任何Apple方式,当我们不需要时,这些插入不会被应用?
我的应用使用多种货币,这些货币使用不同的格式,例如:
卢布的价格显示为:1,101Руб.
美元的相同金额显示为:1 101美元
如何通过为不同货币定义一组不同的格式来更改分组分隔符,货币符号和货币符号的位置.
这就是我的短代码的立场
var formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.locale = NSLocale.currentLocale()
formatter.stringFromNumber(4500000)
//Output : $4,500,000.00
//Expected : 4,500,000 ???.
Run Code Online (Sandbox Code Playgroud)