我正在尝试设置UIBarButtonItem类似的字体:
let barButton = UIBarButtonItem.appearance()
barButton.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "AvenirNext", size: 15], forState: UIControlState.Normal)
Run Code Online (Sandbox Code Playgroud)
但是它会抛出一个编译错误:
无法使用参数列表类型'($ T7,forState:UIControlState)调用'init'
我不知道这意味着什么.我也试过了
barButton.titleTextAttributesForState(UIControlState.Normal) =[NSFontAttributeName...]`
Run Code Online (Sandbox Code Playgroud)
但似乎它不可转让
我该如何解决这个问题?
我的 macOS 应用程序中有以下视图:
struct ViewWithToolbar: View {
var body: some View {
Group {
Text("Hello from ViewWithToolbar!")
.padding()
}
.toolbar {
Button("Action1") { }
Button("Action2") { }
}
.frame(minWidth: 500, minHeight: 400.0)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在App声明中通过这个视图,一切都会按预期进行。当我尝试在新窗口中呈现此视图时,问题就开始了,如下例所示:
struct RootView: View {
var body: some View {
Group {
Button("Present View with Toolbar") {
let controller = NSHostingController(rootView: ViewWithToolbar())
let window = NSWindow(contentViewController: controller)
window.contentViewController = controller
window.title = "View with Toolbar"
window.styleMask = [.titled, .closable, .miniaturizable, .resizable]
window.makeKeyAndOrderFront(nil)
}
.padding() …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用简单的抛物线形状UIBezierPath.我有一个maxPoint和一个boundingRect我基于抛物线的宽度和伸展.
下面是我做得出抛物线(我画在容器视图中的抛物线,该功能rect会container.bounds):
func addParabolaWithMax(maxPoint: CGPoint, inRect boundingRect: CGRect) {
let path = UIBezierPath()
let p1 = CGPointMake(1, CGRectGetMaxY(boundingRect)-1)
let p3 = CGPointMake(CGRectGetMaxX(boundingRect)-1, CGRectGetMaxY(boundingRect)-1)
path.moveToPoint(p1)
path.addQuadCurveToPoint(p3, controlPoint: maxPoint)
// Drawing code
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我希望maxPoint我在函数中发送的是抛物线本身的实际极端点.例如,如果我发送(CGRectGetMidX(container.bounds), 0),最大点应该在最顶端的中心.但是在使用此特定点的函数时,结果如下:
那么这条道路究竟是什么呢?或者换句话说,我怎样才能从controlPoint我需要的实际最大点到达?我已经尝试根据y值的高度添加和减去值中的不同值boundingRect,但我找不到正确的组合,因为在具有不同y值的不同点中它表现不同.似乎有某种乘数被添加,我该如何解决?
我尝试通过Facebook SDK登录系统登录,viewWillAppear如下所示:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if !loggedIn {
if let token = FBSDKAccessToken.current() {
loggedIn = true
self.accessToken = token
} else {
let login = FBSDKLoginButton()
login.center = view.center
view.addSubview(login)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不正确真实设备在iOS模拟器10的工作,但最近,使用Xcode中8和斯威夫特3似乎失败.登录按钮正常工作并提示登录和授权页面,但在授权/登录后,令牌(FBSDKAccessToken.current())仍然存在nil.
同样,该问题仅适用于模拟器,使用iOS 10,Xcode 8和Swift 3.
可能是什么问题,我怎样才能让它在模拟器上运行?提前致谢.
我想获得平移手势的速度,我想使用发送者的速度属性,但它似乎不起作用:
@IBAction func handleGesture(sender: AnyObject) {
let v = sender.velocity
}
Run Code Online (Sandbox Code Playgroud)
但它抛出一个错误说:
"ambiguous use of 'velocity'"
如果那不是获取平移手势速度的方式,那是什么?
ios ×5
swift ×5
cocoa-touch ×1
facebook ×1
graphics ×1
macos ×1
nswindow ×1
objective-c ×1
swiftui ×1
uibezierpath ×1
xcode ×1