gpt4 book ai didi

ios - 使用自动布局时何时将 imageView 添加到 UIButton

转载 作者:行者123 更新时间:2023-11-29 10:25:00 25 4
gpt4 key购买 nike

目前我有多个 UIButton,它们在左侧有一个图像(通过 IB 添加)。我想以编程方式将 UIImageView subview 添加到右侧的按钮。目前我是这样做的:

UIImageView *rightArrow = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menu-arrow.png"]];
rightArrow.frame = CGRectMake(button.frame.size.width - 32, button.frame.size.height/2 - 9, 17, 17);
rightArrow.tag = 22;
[button addSubview:rightArrow];

这对于添加按钮并将其放置在右侧非常有效。但是,在 ViewDidLoad 方法中执行此操作会产生问题。在 IB 中,按钮的宽度就是 View 的宽度。所以在 ViewDidLoad 方法中,按钮的宽度没有被自动布局改变。所以它不会出现在最右侧。

所以我把它移到了ViewDidLayoutSubviews。但是在 iOS 8 上,这会被调用多次!在 iOS 7 上它被调用一次!此外,在 iOS 8 中,ViewDidLayoutSubviews 的 LAST 调用在放置图像方面是最准确的!

我该如何解决这个特定问题?另外,如果可能的话,我想以编程方式执行此操作,而不是尝试和 IB 搞混。

编辑:原来最佳答案 (IMO) 来自 T 先生(在评论中),他将代码放在 ViewDidAppear 中,然后检查您是否已经添加了 ImageView 到按钮。

最佳答案

But on iOS 8, this is called multiple times! And on iOS 7 it's called once! Also, in iOS 8 the LAST call by ViewDidLayoutSubviews is the most accurate in terms of placing the image!

因此 每次 调用 viewDidLayoutSubviews 时响应。如果 ImageView 已添加,请不要再次添加它,但如有必要请重新定位。

然而,更好的方法是使用自动布局来定位 ImageView 本身!不要给它分配框架,而是给它约束。现在它将自动重新定位以响应 View 布局,其余时间。

关于ios - 使用自动布局时何时将 imageView 添加到 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32850249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com