GVKun编程网logo

在SwiftUI中以编程方式检测Tab栏或TabView的高度(swift判断语句)

8

本文将带您了解关于在SwiftUI中以编程方式检测Tab栏或TabView的高度的新内容,同时我们还将为您解释swift判断语句的相关知识,另外,我们还将为您提供关于ios–uitableview的框

本文将带您了解关于在SwiftUI中以编程方式检测Tab栏或TabView的高度的新内容,同时我们还将为您解释swift判断语句的相关知识,另外,我们还将为您提供关于ios – uitableview的框架没有以编程方式改变、ios – 以编程方式更改UIImageView Xcode Swift的高度和宽度、ios – 以编程方式更改UITableView的大小、ios – 在Swift 3中以编程方式使用ScrollView的实用信息。

本文目录一览:

在SwiftUI中以编程方式检测Tab栏或TabView的高度(swift判断语句)

在SwiftUI中以编程方式检测Tab栏或TabView的高度(swift判断语句)

我有一个SwiftUI应用程序,它将具有一个浮动播客播放器,类似于位于选项卡栏上方的Apple
Music播放器,并且在播放器运行时在所有选项卡和视图中均保持不变。我还没有找到一种好的方法来放置播放器,使其处于Tab栏上方,因为Tab栏的高度随设备而异。我发现的主要问题是如何将播放器放置在应用程序根视图中的叠加层或ZStack中,而不是在TabView本身中。由于我们无法自定义TabView布局的视图层次结构,因此无法在TabBar本身及其上方的视图内容之间注入视图。我的基本代码结构:

TabView(selection: $appState.selectedTab){  Home()  .tabItem {    VStack {        Image(systemName: "house")        Text("Home")    }  }  ...}.overlay(  VStack {    if(audioPlayer.isShowing) {      Spacer()      PlayerContainerView(player: audioPlayer.player)      .padding(.bottom, 58)      .transition(.moveAndFade)    }  })

这里的主要问题是PlayerContainerView的位置是硬编码的,填充为58,以便清除TabView。如果我可以检测到TabView的实际框架高度,则可以针对给定设备进行全局调整,这样就可以了。有人知道如何可靠地做到这一点吗?还是您有任何想法如何将PlayerContainerView放置在TabView本身内,以便在切换显示时仅显示在Home()视图和Tab栏之间?对于任何反馈,我们都表示感谢。

答案1

小编典典

由于正式允许并记录了与UIKit的桥梁,因此可以在需要时从那里读取所需的信息。

这是直接从中读取标签栏高度的可能方法 UITabBar

// Helper bridge to UIViewController to access enclosing UITabBarController// and thus its UITabBarstruct TabBarAccessor: UIViewControllerRepresentable {    var callback: (UITabBar) -> Void    private let proxyController = ViewController()    func makeUIViewController(context: UIViewControllerRepresentableContext<TabBarAccessor>) ->                              UIViewController {        proxyController.callback = callback        return proxyController    }    func updateUIViewController(_ uiViewController: UIViewController, context: UIViewControllerRepresentableContext<TabBarAccessor>) {    }    typealias UIViewControllerType = UIViewController    private class ViewController: UIViewController {        var callback: (UITabBar) -> Void = { _ in }        override func viewWillAppear(_ animated: Bool) {            super.viewWillAppear(animated)            if let tabBar = self.tabBarController {                self.callback(tabBar.tabBar)            }        }    }}// Demo SwiftUI view of usagestruct TestTabBar: View {    var body: some View {        TabView {            Text("First View")                .background(TabBarAccessor { tabBar in                    print(">> TabBar height: \(tabBar.bounds.height)")                    // !! use as needed, in calculations, @State, etc.                })                .tabItem { Image(systemName: "1.circle") }                .tag(0)            Text("Second View")                .tabItem { Image(systemName: "2.circle") }                .tag(1)        }    }}

ios – uitableview的框架没有以编程方式改变

ios – uitableview的框架没有以编程方式改变

我的UIViewController中有2个UITableView.其中一个位于屏幕右侧,直到屏幕中心.另一个是从中心到左边.

用户可以通过按导航栏上的一个按钮隐藏正确的UITableview.

我使用此代码使UITableview全屏显示:

self.rightTableView.hidden= YES;
self.leftTable.frame= CGRectMake(0,self.dataTableView.frame.origin.y,self.view.frame.size.width,self.dataTableView.frame.size.height);

但它没有用.

我甚至将此代码放在viewdidload和viewDidAppear方法上,但框架没有改变.

解决方法

使用自动布局时,修改框架将不起作用.

相反,您应该修改约束.

您可以通过为约束创建出口并在界面构建器中进行连接来完成此操作.

ios – 以编程方式更改UIImageView Xcode Swift的高度和宽度

ios – 以编程方式更改UIImageView Xcode Swift的高度和宽度

嘿由于某种原因,我正在努力设置我的一个图像视图的高度和宽度.我想设置它,所以高度只有我的屏幕的20%.我知道要定期设置,你可以做一些事情:
image =(0,50,50)

但我需要的高度不是一个静态数字.
像image =(0,frame.height * 0.2,50)

有什么建议么?

解决方法

Swift 3中接受的答案:
let screenSize: CGRect = UIScreen.main.bounds
image.frame = CGRect(x: 0,y: 0,width: 50,height: screenSize.height * 0.2)

ios – 以编程方式更改UITableView的大小

ios – 以编程方式更改UITableView的大小

我试图从我的服务器上的 mysql数据库显示数据.我正在将数据加载到表中.问题是,我不希望这个数据是唯一的观点.我想要与其他内容共享表.理想情况下,我希望桌子能够成长和扩展,它们的数量是多少.所以如果有3个细胞,我希望它成长为适合所有3.如果有10,我希望它成长为适合所有10.

看起来苹果这样做很多.一个主要的地方,我注意到它是在他们的联系人,电话号码表增长和收缩,取决于有多少个数字.

我在网上搜索,找不到很多信息.任何人都可以帮忙吗?

谢谢

解决方法

与您的桌面大小决定其内容…
tableView.frame = CGRectMake(tableView.frame.origin.x,tableView.frame.origin.y,tableView.frame.size.width,tableView.contentSize.height);

希望这能帮助你…

总结

以上是小编为你收集整理的ios – 以编程方式更改UITableView的大小全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

ios – 在Swift 3中以编程方式使用ScrollView

ios – 在Swift 3中以编程方式使用ScrollView

我已经搜索了其他问题,似乎仍然在使用 swift 3中的autolayout以编程方式创建我的scrollView时遇到了一些麻烦.我能够让我的scrollview显示如下图所示,但是当我滚动到底部时我的其他标签确实如此没有显示,“滚动顶部”标签不会消失.

希望有人可以帮助我们查看下面的代码!

import UIKit

class ViewController: UIViewController {

let labelOne: UILabel = {
    let label = UILabel()
    label.text = "Scroll Top"
    label.backgroundColor = .red
    label.translatesAutoresizingMaskIntoConstraints = false
    return label
}()

let labelTwo: UILabel = {
    let label = UILabel()
    label.text = "Scroll Bottom"
    label.backgroundColor = .green
    label.translatesAutoresizingMaskIntoConstraints = false
    return label
}()


override func viewDidLoad() {
    super.viewDidLoad()

    let screensize: CGRect = UIScreen.main.bounds
    let screenWidth = screensize.width
    let screenHeight = screensize.height
    var scrollView: UIScrollView!
    scrollView = UIScrollView(frame: CGRect(x: 0,y: 120,width: screenWidth,height: screenHeight))
    scrollView.contentSize = CGSize(width: screenWidth,height: 2000)
    scrollView.addSubview(labelOne)
    scrollView.addSubview(labelTwo)


    view.addSubview(labelOne)
    view.addSubview(labelTwo)
    view.addSubview(scrollView)

    // Visual Format Constraints
    view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|",options: NSLayoutFormatOptions(),metrics: nil,views: ["v0": labelOne]))
    view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-100-[v0]",views: ["v0": labelOne]))

    // Using iOS 9 Constraints in order to place the label past the iPhone 7 view
    view.addConstraint(NSLayoutConstraint(item: labelTwo,attribute: .top,relatedBy: .equal,toItem: labelOne,attribute: .bottom,multiplier: 1,constant: screenHeight + 200))
    view.addConstraint(NSLayoutConstraint(item: labelTwo,attribute: .right,constant: 0))
    view.addConstraint(NSLayoutConstraint(item: labelTwo,attribute: .left,constant: 0)     

    }

}

解决方法

使用约束来定义滚动内容大小很容易 – 因此您不必进行任何手动计算.

只记得:

>滚动视图的内容元素必须具有左/上/宽度/高度值.对于标签等对象,它们具有固有的大小,因此您只需要定义左侧和右侧.最佳.
>滚动视图的内容元素也定义了可滚动区域的边界 – contentSize – 但是它们使用底部和底部来定义.正确的约束.
>结合这两个概念,您会发现需要一个“连续链”,其中至少有一个元素定义了顶部/左侧/底部/右侧范围.

这是一个简单的示例,它将直接在Playground页面中运行:

import UIKit
import PlaygroundSupport

class TestViewController : UIViewController {

    let labelOne: UILabel = {
        let label = UILabel()
        label.text = "Scroll Top"
        label.backgroundColor = .red
        label.translatesAutoresizingMaskIntoConstraints = false
        return label
    }()

    let labelTwo: UILabel = {
        let label = UILabel()
        label.text = "Scroll Bottom"
        label.backgroundColor = .green
        label.translatesAutoresizingMaskIntoConstraints = false
        return label
    }()

    let scrollView: UIScrollView = {
        let v = UIScrollView()
        v.translatesAutoresizingMaskIntoConstraints = false
        v.backgroundColor = .cyan
        return v
    }()


    override func viewDidLoad() {
        super.viewDidLoad()

        // add the scroll view to self.view
        self.view.addSubview(scrollView)

        // constrain the scroll view to 8-pts on each side
        scrollView.leftAnchor.constraint(equalTo: view.leftAnchor,constant: 8.0).isActive = true
        scrollView.topAnchor.constraint(equalTo: view.topAnchor,constant: 8.0).isActive = true
        scrollView.rightAnchor.constraint(equalTo: view.rightAnchor,constant: -8.0).isActive = true
        scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor,constant: -8.0).isActive = true

        // add labelOne to the scroll view
        scrollView.addSubview(labelOne)

        // constrain labelOne to left & top with 16-pts padding
        // this also defines the left & top of the scroll content
        labelOne.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor,constant: 16.0).isActive = true
        labelOne.topAnchor.constraint(equalTo: scrollView.topAnchor,constant: 16.0).isActive = true

        // add labelTwo to the scroll view
        scrollView.addSubview(labelTwo)

        // constrain labelTwo at 400-pts from the left
        labelTwo.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor,constant: 400.0).isActive = true

        // constrain labelTwo at 1000-pts from the top
        labelTwo.topAnchor.constraint(equalTo: scrollView.topAnchor,constant: 1000).isActive = true

        // constrain labelTwo to right & bottom with 16-pts padding
        labelTwo.rightAnchor.constraint(equalTo: scrollView.rightAnchor,constant: -16.0).isActive = true
        labelTwo.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor,constant: -16.0).isActive = true

    }

}


let vc = TestViewController()
vc.view.backgroundColor = .yellow
PlaygroundPage.current.liveView = vc

我们今天的关于在SwiftUI中以编程方式检测Tab栏或TabView的高度swift判断语句的分享已经告一段落,感谢您的关注,如果您想了解更多关于ios – uitableview的框架没有以编程方式改变、ios – 以编程方式更改UIImageView Xcode Swift的高度和宽度、ios – 以编程方式更改UITableView的大小、ios – 在Swift 3中以编程方式使用ScrollView的相关信息,请在本站查询。

本文标签: