此代码在ios10中正常工作.我得到我的标签和图像按钮,这是用户照片配置文件,圆形圆形..好的.但是当运行xcode 9 ios11模拟器时,我将它拉出来.按钮框必须是32x32,当检查SIM并获取视图并告诉xcode描述视图时,我得到170x32或类似的输出.
继承我的代码.
let labelbutton = UIButton( type: .system)
labelbutton.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside)
labelbutton.setTitleColor(UIColor.white, for: .normal)
labelbutton.contentHorizontalAlignment = .right
labelbutton.titleLabel?.font = UIFont.systemFont(ofSize: 18.00)
let button = UIButton(type: .custom)
button.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside)
button.frame = CGRect(x: 0, y: 0, width: 32, height: 32)
button.setTitleColor(UIColor.white, for: .normal)
button.setTitleColor(UIColor.white, for: .highlighted)
var buttomItem : UIBarButtonItem = UIBarButtonItem()
buttomItem.customView = button
buttomItem.target = self
buttomItem.action = "ToLogin"
var labelItem : UIBarButtonItem = UIBarButtonItem()
labelItem.customView = labelbutton
labelItem.target = self
labelItem.action = "ToLogin"
if …Run Code Online (Sandbox Code Playgroud) 让我解释一下,我有一个带有 SearchBarView 的父视图,我正在传递这样的焦点状态绑定。
SearchBarView(searchText:$object.searchQuery, searching: $object.searching, focused: _searchIsFocused
Run Code Online (Sandbox Code Playgroud)
这完美地@FocusState var searchIsFocused: Bool按照父视图中定义的方式将其传递给 SearchBarView (子视图)。在父级中,我可以检查值的变化,一切正常。
问题依赖于当在父级中我有 SearchBarView.toolbar {}和ToolBarItem(). 什么也没有发生,焦点的值没有改变,等等。我的 SearchBarView 在顶部导航栏中,但仍然想在那里使用它..但我需要能够知道它何时处于焦点状态。如果我在任何 VStack 或其他东西中使用,一切都很完美..
-- 编辑 -- 提供更多代码来测试
搜索栏视图
struct SearchBarView: View {
@Environment(\.colorScheme) var colorScheme
@Binding var searchText: String
@Binding var searching: Bool
@FocusState var focused: Bool
var body: some View {
ZStack {
Rectangle()
.foregroundColor(colorScheme == .dark ? Color("darkSearchColor") : Color.white)
.overlay(
RoundedRectangle(cornerRadius: 13)
.stroke(.black.opacity(0.25), lineWidth: 1)
)
HStack {
Image(systemName: "magnifyingglass").foregroundColor( colorScheme == …Run Code Online (Sandbox Code Playgroud) 这对某些专家来说可能很容易,所以.Xcode可视化界面中没有用于故事板使用的WKWebView,而不是UIWebview,因此必须以编程方式创建.我使用导航控制器为我的整个应用程序.
我在故事板中创建了一个VIEW,并使用自动布局来约束0,0,0,0.所以想将WKWebView添加到该视图"Daview".作为子视图并完全填写.我似乎无法弄明白.
请看下面的代码
class ViewController2: UIViewController ,WKNavigationDelegate {
@IBOutlet weak var navigation: UINavigationItem!
@IBOutlet var daview: UIView!
var restWeb: WKWebView?
@IBOutlet var BottomView: UIView!
// var ActivityIndicator = UIActivityIndicatorView()
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)
println(" daview bounds in VIEWDIDAPPEAR is \(self.daview.bounds) y Frame \(self.daview.frame)")
restWeb!.bounds = daview.bounds
}
override func viewDidLoad() {
super.viewDidLoad()
/* Create our preferences on how the web page should be loaded */
let preferences = WKPreferences()
preferences.javaScriptEnabled = true
/* Create a configuration for our …Run Code Online (Sandbox Code Playgroud) 要使带有约束的 uiview 正确动画,您必须设置新的约束值,然后调用 theView.layoutIfNeeded() ,对于 swift 3 来说,这不起作用,而不是从视图的 whos 约束更改中调用。必须从上层视图调用它,如下所示:self.view.layoutIfNeeded()。 前任 :
UIView.animate(withDuration: 0.1,
delay: 0.1,
options: UIViewAnimationOptions.curveEaseIn,
animations: { () -> Void in
constraintHeight.constant = 10.00
// instead of myView.layoutIfNeeded() // Swift 2
self.view.layoutIfNeeded() // Swift 3
}, completion: { (finished) -> Void in
// ....
})
Run Code Online (Sandbox Code Playgroud)
问题是,就我而言,我做了更改,我使用此动画的方式是用于底部视图(底部栏/横幅视图),该底部视图在向下滚动表格视图时隐藏,并在一直滚动到顶部时出现。表格视图。现在我已经使用 self.view.layoutIfNeeded() 更改了 swift 3 的正确代码,当向下和向上滚动 tableview 的部分时,tableview 的行为很奇怪,速度变慢,行开始显示为淡入或显示速度很慢当跳跃或慢动作移动时,内存似乎也从 80mb 增加到 100mb。如果我消除代码中的行,我不会得到动画,视图只会出现并随着表视图的滚动而消失,但是......我没有得到奇怪的行为。我还检查了视图层次结构,以检查是否以某种方式创建了奇怪的 100 个视图复制或其他内容。有关如何解决此问题的任何提示。所有这一切都在 swift 2 中使用 theView.layoutIfneeded() 工作正常,但现在调用是在上视图中进行的..天哪..行为怪异
问题来自Swift 3 UIView 动画解决方案。
ios ×2
swift3 ×2
uiview ×2
animation ×1
autolayout ×1
constraints ×1
focus ×1
ios11 ×1
state ×1
swift ×1
swift4 ×1
swiftui ×1
view ×1
wkwebview ×1
xcode9-beta ×1