gpt4 book ai didi

ios - iCarousel 自定义 View xib 自动更改 subview 宽度

转载 作者:行者123 更新时间:2023-11-30 13:00:04 26 4
gpt4 key购买 nike

我尝试使用 XIB UI 将自定义 View 添加到 iCarousel View ,但是在初始化并运行时,轮播 View 的 subview 的宽度会自动更改。

func carousel(carousel: iCarousel!, viewForItemAtIndex index: Int, reusingView view: UIView!) -> UIView! {

var itemView: ProfileQuestionView

//create new view if no view is available for recycling
if (view == nil) {

itemView = UINib.init(nibName: "ProfileQuestionView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as! ProfileQuestionView
itemView.frame = CGRect.init(x: 20, y: 10, width: self.view.frame.width-40, height: self.carouselView.frame.height-20)

itemView.layer.borderColor = UIColor.clearColor().CGColor
itemView.layer.borderWidth = 0.5
itemView.layer.cornerRadius = 5.0;
itemView.layoutIfNeeded()

} else {

//get a reference to the label in the recycled view
itemView = view as! ProfileQuestionView

itemView.layoutIfNeeded()
}

return itemView
}

不知道为什么会出现这个问题。

carouselView.type = iCarouselType.Rotary

最佳答案

这只是一次尝试。不确定它会起作用。

尝试改变你的这一行

itemView.frame = CGRect.init(x: 20, y: 10, width: self.view.frame.width-40, height: self.carouselView.frame.height-20)

itemView.frame = CGRect.init(x: 20, y: 10, width: UIScreen.mainScreen().bounds.width-40, height: self.carouselView.frame.height-20)

就像您在 viewDidLoad 中重新加载轮播一样,约束尚未设置。

还可以尝试通过标签获取您的商品。

if (view == nil) {
itemView = UINib.init(nibName: "ProfileQuestionView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as! ProfileQuestionView

// give a tag
itemView.tag = 1
//Then your rest of the code
} else {
// Reusability
itemView = (view?.viewWithTag(1))!
}

希望这能解决问题。

关于ios - iCarousel 自定义 View xib 自动更改 subview 宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39950666/

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