尝试在SwiftUI中添加全屏活动指示器。
我可以.overlay(overlay: )
在View
协议中使用功能。
这样,我可以进行任何视图叠加,但是找不到的UIActivityIndicatorView
等效于iOS默认样式SwiftUI
。
如何使用制作默认样式微调框SwiftUI
?
注意:这与在UIKit框架中添加活动指示器无关。
我一直在尝试使用SwiftUI复制我的应用程序。它有一个RootViewController,根据枚举值,它显示了一个不同的子视图控制器。与在SwiftUI中一样,我们使用视图代替视图控制器,我的代码如下所示:
struct RootView : View {
@State var containedView: ContainedView = .home
var body: some View {
// custom header goes here
switch containedView {
case .home: HomeView()
case .categories: CategoriesView()
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到警告:
包含控制流语句的闭包不能与function builder一起使用
ViewBuilder
。
因此,是否有其他选择可以切换,以便我可以复制此行为?
我有以下服务:
trait PingService extends MyHttpService {
val pingRoutes =
path("ping") {
get {
complete("message" -> "pong")
}
}
}
Run Code Online (Sandbox Code Playgroud)
MyHttpService
是一个扩展的自定义类,HttpService
只包含实用程序方法.
这是测试规范:
import akka.actor.ActorRefFactory
import org.json4s.{DefaultFormats, Formats}
import org.scalatest.{FreeSpec, Matchers}
import spray.testkit.ScalatestRouteTest
class PingServiceSpec extends FreeSpec with PingService with ScalatestRouteTest with Matchers {
override implicit def actorRefFactory: ActorRefFactory = system
override implicit def json4sFormats: Formats = DefaultFormats
"Ping service" - {
"when calling GET /ping" - {
"should return 'pong'" in {
Get("/ping") ~> pingRoutes ~> check { …
Run Code Online (Sandbox Code Playgroud) 我已经介绍了一个模式视图,但是我希望用户先经历一些步骤才能将其关闭。当前可以拖动视图以将其关闭。
有没有办法阻止这种可能性?
我已经看过WWDC会议的视频,他们提到了它,但是我似乎没能确切地知道我需要的代码。
struct OnboardingView2 : View {
@Binding
var dismissFlag: Bool
var body: some View {
VStack {
Text("Onboarding here! ")
Button(action: {
self.dismissFlag.toggle()
}) {
Text("Dismiss")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我目前有一些文本和一个按钮,以后会使用它来关闭视图。
我正在尝试移植一些创建渐变层的Objective-C代码
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = colors;
gradientLayer.locations = locations;
gradientLayer.frame = view.bounds;
[view.layer insertSublayer:gradientLayer atIndex:index];
Run Code Online (Sandbox Code Playgroud)
但是在Swift中,CAGradientLayer似乎没有静态"层"方法或构造函数.尝试将其用作类型会产生:
let a:CAGradientLayer? = null
Run Code Online (Sandbox Code Playgroud)
错误:使用模块"CAGradientLayer"作为类型
据我所知,CAGradientLayer不是我可以导入的模块.在Swift中执行渐变图层的正确方法是什么?
我在列表中有两个按钮,在点击时,列表项的整个区域都会突出显示。有没有办法将两个按钮分开?
在这种情况下,我有一个“操作”按钮和一个“信息”按钮:
我发现了这个问题,但没有直接解决方案。
这是代码:
var body: some View {
HStack {
Text(control.name)
Spacer()
Button(action: {
print("action")
}) {
Text("Action")
}
.frame(width: 250 - 10)
.padding(5)
.background(Color(white: 0.9))
.cornerRadius(10)
.frame(width: 250)
Group {
Button(action: {
print("action")
}) {
Image(systemName: "info.circle")
.foregroundColor(.accentColor)
}
}
}
}
Run Code Online (Sandbox Code Playgroud) import Foundation
import MobileCoreServices
func checkFileExtension(fileName: NSString){
println(fileName)
var fileExtension:CFStringRef = fileName.pathExtension
println(fileExtension)
var fileUTI:CFStringRef = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, nil)
println(fileUTI)
let testBool = UTTypeConformsTo(fileUTI, kUTTypeImage) != 0
if testBool{
println("image")
}
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
错误:'Unmanaged'不能转换为'CFStringRef'
在线
var fileUTI:CFStringRef = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,fileExtension,nil)
有任何想法吗 ??谢谢
我正在尝试NSCollectionView
在El Capitan中引入的新API.
在WWDC视频之后,我创建了一个子类NSCollectionViewFlowLayout
来确定集合视图的布局.
class Layout : NSCollectionViewFlowLayout {
override func prepareLayout() {
super.prepareLayout()
self.minimumInteritemSpacing = 0
self.minimumLineSpacing = 0
let cheight = self.collectionView!.bounds.height
let cwidth = self.collectionView!.bounds.width
self.itemSize = CGSizeMake(cwidth / 2.0, cheight / 6.0)
}
}
Run Code Online (Sandbox Code Playgroud)
之后,我创建了一个NSObject
子类作为数据源.
class DataSource : NSObject, NSCollectionViewDataSource {
func collectionView(collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
func collectionView(collectionView: NSCollectionView, itemForRepresentedObjectAtIndexPath indexPath: NSIndexPath) -> NSCollectionViewItem {
/* DOESN'T GET CALLED! */
let item = collectionView.makeItemWithIdentifier("cell", …
Run Code Online (Sandbox Code Playgroud) 我正在尝试TextField
使用数字键盘类型创建一个,但是找不到任何方法。
我看过苹果的文档,没有运气。
谢谢!
我正在尝试加载地图并在用户位置上显示初始位置,并使用 SwiftUI 在地图上显示用户的位置。我不知道如何在 SwiftUI 中做到这一点。
我试图将 'view.showsUserLocation = true' 放在 updateUIView 函数中,但它不起作用。
import SwiftUI
import MapKit
struct MapView : UIViewRepresentable {
func makeUIView(context: Context) -> MKMapView {
MKMapView(frame: .zero)
}
func updateUIView(_ view: MKMapView, context: Context) {
view.showsUserLocation = true
let coordinate = CLLocationCoordinate2D(
latitude: 34.011286, longitude: -116.166868)
let span = MKCoordinateSpan(latitudeDelta: 2.0, longitudeDelta: 2.0)
let region = MKCoordinateRegion(center: view.userLocation.location?.coordinate ?? coordinate, span: span)
view.setRegion(region, animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试打印它时,该位置为零。