首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改子视图属性

修改子视图属性
EN

Stack Overflow用户
提问于 2015-02-05 08:29:30
回答 1查看 2K关注 0票数 1

我正在使用这个函数来创建一些导航按钮。

代码语言:javascript
复制
func create(size:CGFloat, y:CGFloat, button:Dictionary<String, String>) -> UIButton {
    // setup size variables
    let width = size;

    var height = size;
    if button["position"] == "top" || button["position"] == "bottom" {
        height = size+1;
    }

    var marginTop:CGFloat = 1
    if button["position"] == "top" {
        marginTop = 0
    }

    // create button
    let btn = UIButton(frame: CGRectMake(UIScreen.mainScreen().bounds.width-width, y*size, width, height))

    // background image
    let bgImage = UIImageView(frame: CGRectMake(0, marginTop, width, height-2))
    bgImage.image = UIImage(named: "nav-bg.png")

    // background image active
    var bgImageActive = UIImageView(frame: CGRectMake(0, marginTop, width, height-2))
    bgImageActive.image = UIImage(named: button["bg-active"]!)
    bgImageActive.hidden = true
    bgImageActive.alpha = 0

    // button icon
    let iconImage = UIImageView(frame: CGRectMake(0, marginTop, width, height-2))
    iconImage.image = UIImage(named: button["icon"]!)

    // button label
    let label = UILabel(frame: CGRectMake(10, height-35, width-20, 30))
    label.text = button["name"]!
    label.textColor = UIColor.whiteColor()
    label.font = UIFont(name: "HelveticaNeue-Bold", size: 10)
    label.textAlignment = NSTextAlignment.Center
    label.numberOfLines = 2

    // add subviews
    btn.addSubview(bgImage)
    btn.addSubview(bgImageActive)
    btn.addSubview(iconImage)
    btn.addSubview(label)

    return btn
}

var btn = create(navBtnSize, y: CGFloat(i), button: navButtonSettings[i])
btn.addTarget(self, action: "navBtnTapped:", forControlEvents: UIControlEvents.TouchUpInside)

func navBtnTapped(sender:UIButton) {
    // change button subview properties
}

当我点击按钮时,如何将"bgImageActive“子视图设置为不隐藏?因为按钮是从函数创建的,所以我不能按名称调用ImageView。

我试过:

代码语言:javascript
复制
sender.subviews[1].hidden = false

但这会导致错误:

代码语言:javascript
复制
'AnyObject' does not have a member named hidden.

我不知道如何修改子视图属性。

我想我也可以尝试标记UIImageView并调用:

代码语言:javascript
复制
bgImageActive.tag = 1
~
sender.viewWithTag(1).hidden = false

但这也没用。

任何帮助都将不胜感激。

干杯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-05 08:32:59

试一试

代码语言:javascript
复制
(sender.subviews[1] as UIImageView).hidden = false

问题是,子视图数组存储AnyObjects,而且Anyobject没有隐藏属性,因此您必须按照拥有该属性的顺序对其进行强制转换。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28339343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档