从自定义 UIView 类设置视图宽度约束不更新框架

凉爽的冬天

我有一个 UIView,我想通过使用百分比来确定宽度来获得一个简单的加载程序视图。

我已经完成了百分比代码,我知道它正在工作。

但是我在设置视图的宽度约束时遇到了问题。我通过获取框架宽度并将其乘以百分比来找到宽度。我知道它得到了正确的宽度。但我似乎无法从这个函数中设置约束。

我的代码在我的 UIView 子类中是这样的:

func initSubviews() {
    // in here i do some other stuff and have an asyncronous call to an api
    // so then I've got this code calling the next function
    DispatchQueue.main.async {
        self.setCompletionWidth(nextTimer: nextTimer!, oldDate: oldDate!)
    }
}

func setCompletionWidth(nextTimer: Date, oldDate: Date) {
   let date = Date()

   // calculatePercent returns something like 0.49
   let percent = calculatePercent(middleDate: date, endDate: nextTimer, originalDate: oldDate)

   //this is returning a correct value
   let width = (self.frame.width)*percent

// completionView is the view I'm trying to change the width of
   self.completionView.widthAnchor.constraint(equalToConstant: width)
   self.layoutSubviews()
}

发生的事情是 completionView 没有获得正确的宽度。我也试过 setCompletionWidth 函数

self.completionView.widthAnchor.constraint(equalToConstant: width)
containerView.layoutSubviews()

UIView.animate(withDuration: 0.2) {
    self.completionView.widthAnchor.constraint(equalToConstant: width)
    self.containerView.layoutSubviews()
    //also tried self.layoutSubviews here
}

self.layoutIfNeeded()
self.completionView.widthAnchor.constraint(equalToConstant: width)
self.layoutIfNeeded()

我期望 completionView 的宽度类似于 150,但它是 350,这是它的原始宽度。

我认为发生的事情是在我将约束设置为不同的值后视图没有更新。但是,我终生无法更新它。我很想在这里得到一些帮助。

什_汗

你需要 .isActive = true

self.completionView.widthAnchor.constraint(equalToConstant: width).isActive = true

还要更改宽度,您需要创建一个宽度变量,例如

var widthCon:NSLayoutConstraint!

widthCon =  self.completionView.widthAnchor.constraint(equalToConstant: width)
widthCon.isActive = true

然后用

widthCon.constant = /// some value 
self.superview!.layoutIfNeeded()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义UIView类-Swift

来自分类Dev

自定义UIView如何响应基于约束的框架更改

来自分类Dev

在自定义UIView类swift中从UIView创建IBoutlet

来自分类Dev

自定义 UIView 类约束取决于 ParentView

来自分类Dev

如何为 UIView 的自定义子类设置约束?

来自分类Dev

约束的常量未在自定义UIView的方法中更新

来自分类Dev

在UIViewRepresentable SwiftUI中设置自定义UIView框架

来自分类Dev

ViewController不使用自定义类更新UIView

来自分类Dev

ViewController不使用自定义类更新UIView

来自分类Dev

如何在自定义UIView中添加约束?

来自分类Dev

如何重绘自定义UIView的自定义子视图

来自分类Dev

从哪里获得自定义UIView的子类的框架大小

来自分类Dev

移动自定义UIView时,未跟随子视图

来自分类Dev

使用UIView的自定义表格视图单元格

来自分类Dev

与视图控制器内的自定义 UIView 交互

来自分类Dev

在UITableViewCell自定义类的UIView属性上添加UISwipeGestureRecognizer

来自分类Dev

自定义UIView类始终在初始化时崩溃

来自分类Dev

以自定义类以编程方式创建UIView(Swift 4)

来自分类Dev

自定义UIView类始终在初始化时崩溃

来自分类Dev

自定义 UIView 类中的 UIButton 不起作用

来自分类Dev

在 UITableView 中为 UIView 添加自定义类

来自分类Dev

无法在自定义UIview中更新UImageView的图像

来自分类Dev

在另一个自定义UIView中设置/更改嵌套自定义UIView的变量

来自分类Dev

Swift UIView子视图不会在自定义UIView子类中变成圆角

来自分类Dev

自定义UIView过渡

来自分类Dev

快速自定义UIView

来自分类Dev

自定义单元格的UIView框架未在cellForRowAtIndexPath中更新

来自分类Dev

使用情节提要中的自定义UIView捕获视图,什么也不返回?

来自分类Dev

在自定义 UIView 类中创建的 Xamarin iOS 子视图未显示

Related 相关文章

  1. 1

    自定义UIView类-Swift

  2. 2

    自定义UIView如何响应基于约束的框架更改

  3. 3

    在自定义UIView类swift中从UIView创建IBoutlet

  4. 4

    自定义 UIView 类约束取决于 ParentView

  5. 5

    如何为 UIView 的自定义子类设置约束?

  6. 6

    约束的常量未在自定义UIView的方法中更新

  7. 7

    在UIViewRepresentable SwiftUI中设置自定义UIView框架

  8. 8

    ViewController不使用自定义类更新UIView

  9. 9

    ViewController不使用自定义类更新UIView

  10. 10

    如何在自定义UIView中添加约束?

  11. 11

    如何重绘自定义UIView的自定义子视图

  12. 12

    从哪里获得自定义UIView的子类的框架大小

  13. 13

    移动自定义UIView时,未跟随子视图

  14. 14

    使用UIView的自定义表格视图单元格

  15. 15

    与视图控制器内的自定义 UIView 交互

  16. 16

    在UITableViewCell自定义类的UIView属性上添加UISwipeGestureRecognizer

  17. 17

    自定义UIView类始终在初始化时崩溃

  18. 18

    以自定义类以编程方式创建UIView(Swift 4)

  19. 19

    自定义UIView类始终在初始化时崩溃

  20. 20

    自定义 UIView 类中的 UIButton 不起作用

  21. 21

    在 UITableView 中为 UIView 添加自定义类

  22. 22

    无法在自定义UIview中更新UImageView的图像

  23. 23

    在另一个自定义UIView中设置/更改嵌套自定义UIView的变量

  24. 24

    Swift UIView子视图不会在自定义UIView子类中变成圆角

  25. 25

    自定义UIView过渡

  26. 26

    快速自定义UIView

  27. 27

    自定义单元格的UIView框架未在cellForRowAtIndexPath中更新

  28. 28

    使用情节提要中的自定义UIView捕获视图,什么也不返回?

  29. 29

    在自定义 UIView 类中创建的 Xamarin iOS 子视图未显示

热门标签

归档