【问题标题】:Layout views below another programmatically created views在另一个以编程方式创建的视图下方布局视图
【发布时间】:2014-01-24 11:53:58
【问题描述】:

我有一个屏幕,其中包含多个 UIImage(它们的数量和大小仅在运行时才知道,因此我以编程方式添加它们)和这些 UIImage 下方的一些固定按钮。

如何让按钮在所有图片下都显示出来?

我试过了

1.) 将 Buttons 和 Images 放入 2 个单独的视图中,然后在它们之间添加约束。没有结果,按钮隐藏在图像后面。
2.) 将按钮放入单独的视图并在代码中设置约束(尝试了 viewDidLoad 和 viewDidAppear)。根据图像的大小和数量,在容器视图和屏幕顶部之间设置约束。 代码示例:

-(void) viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSInteger totalImages = [self.object.fullphotos count];
    self.labelsTopConstraint.constant = totalImages*(imageHeight + 20) + 10;
}

如果 2 个按钮位于右侧,但不响应触摸。

我应该如何正确布局所有内容?

提前致谢!

【问题讨论】:

    标签: ios iphone objective-c cocoa-touch uibutton


    【解决方案1】:

    为这些图像创建一个 Tableview 并在最后一个单元格中添加按钮。

    【讨论】:

    • 谢谢,使用了一个 tableView 并将每个图像或按钮放在单独的单元格中。
    【解决方案2】:

    最好的方法是创建一个可以在 viewDidAppear 中调用的刷新方法的 Object

    MyObject.h

    @interface MyObject : UIViewController
    @property (nonatomic,strong) UIImageview *img;
    @property (nonatomic,strong) UIButton *btn;
    - (void) refresh;
    

    在 MyObject.m 中

    - (void)viewDidLoad {
        [self.btn addTarget:self action:@selector(myMethod:) forControlEvents:UIControlEventTouchUpInside];
    }
    
    
    - (void) refresh {
         //make your settings here
    }
    
    -(void)myMethod {
        //your button action here
    }
    

    如果你的对象在 NSArray 中,那么在你的控制器中:

    -(void) viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        for (MyObject *myObj in objectsArray) {
            @autoreleasePool {
                [myObj refresh];
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多