IOS 读取xib里的子控件

interface ViewController ()
/**获取.plist数据*/
@property (nonatomic,strong) NSArray *aps;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    //九宫格的总列数
    int totalColumns=5;

    //1.1个格子的尺寸
    CGFloat appW=50;
    CGFloat appH=60;

    //2.计算间隙 =(控制器view的宽度 -5*应用宽度)/应用宽度+1
    CGFloat marginX=(self.view.frame.size.width-totalColumns*appW)/(totalColumns+1);
    CGFloat marginY=55;
    //3.要的应用个数创建对应的格子

    for (int index=0; index<self.aps.count; index++)
    {
        NSBundle *bundle=[NSBundle mainBundle];
        //读取xib文件(会创建AppsView.xib中的描述的所有对象。并且按顺序放到数组中返回)          NSArray *objs=[bundle loadNibNamed:@"AppsView" owner:nil options:nil];           UIView *appView=[objs lastObject]; 

//添加view       [self.view addSubview:appView]; 

//设置frame       int row=index/ totalColumns; int col=index% totalColumns; 

//计算x和y CGFloat appx=marginX+col*(appW+marginX);       CGFloat appY=marginY+row *(appH + marginY);       appView.frame=CGRectMake(appx, appY, appW, appH);     //设置数据      Apps *app=self.aps[index]; 

//设置图片(xib中的appView取子控件 UIImageView) 

// UIImageView *iconView=appView.subviews[0]; //方式1      UIImageView *iconView=(UIImageView *)[appView viewWithTag:10];//方式2      iconView.image=[UIImage imageNamed:app.icon]; 

//设置名称(xib中的appView取子控件 UILabel) 

// UILabel *nameLabel=appView.subviews[1];//方式1

UILabel *nameLabel=(UILabel *)[appView viewWithTag:20];//方式2     nameLabel.text=app.name;   }

}
时间: 2024-08-26 08:40:29

IOS 读取xib里的子控件的相关文章

iOS开发项目篇—43子控件的细节处理

iOS开发项目篇—43子控件的细节处理 一.升级UI 把之前的UI图片删除,换上新的图片(图片命名一致,规范)没有其他的影响. 删除之后,添加. 替换之后,做一次clear操作. 建议把沙盒中的包删除,删除之后再做一次clear操作. 二.调整转发(模块) 1.设置背景(使用提供的素材图片进行平铺) 为转发微博部分设置背景,考虑到这个部分整体上是一个UIView,可以尝试以下设置. 第一种尝试: 但是这样设置,因为图片是平铺的,所以整个背景会出现线条效果,影响显示,不可行. 第二种尝试: 注意:

如何在UIScrollView的xib上添加子控件并添加AutoLayout约束

引言 自从苹果推出了autoLayout之后,作为开发者,深深的体验到了他的便捷之处,再也不用为适配不同屏幕布局UI而烦恼,我们仅仅需要和类关联一个xib文件,想上面放置我们需要的控件xib,并打好其相对于父视图以及同级视图的约束关系,这样我们就做好了不同屏幕的适配.但是奇怪的是UIScrollView上添加子控件,和之前的一样的操作,报的错却很吓人,那是为什么呢? 原因分析 因为UIScrollView想要能滑动的前提是要知道他的ContentSize的大小,我们直接向上面添加约束,他不知道自

iOS 设置视图半透明而子控件不透明

转载:http://www.jianshu.com/p/abe815018b2a 让一个控件半透明,通常我们第一个想到的方法就是调整控件的alpha值.当然如果你的视图上如果有其他子控件就会发现这样的方法是可能达不到你的预期,否则你应该看不到这篇文章了. 对视图直接设置alpha属性的值会导致其子控件也变得半透明,而通常我们的需求是:背景半透明而其子控件不透明. 先说解决办法: 1.用一张半透明的图片做背景. 这个方法当然可以达到要求,但是从编程初期前辈就教导我说在工程中尽量少加入资源,能不用图

WPF silverlight获取子控件(获取DataTemplate里的子控件)

public static class VisualTreeExtensions { /// <summary> /// 获取父节点控件 /// </summary> /// <typeparam name="T">子控件UI</typeparam> /// <param name="obj">子控件</param> /// <param name="name">

kendo ui 查找treelist里的子控件并设置是否显示的方法

下面是循环的全过程: var treeList = $("#treelist").data("kendoTreeList"); //实例化treelist控件 var view = treeList.dataSource.view(); //取出来treelist里的数据 $(view).each(function(index, node) { //逐行循环 var typeId = node.typeId; //取出来用来判断控件是否显示的值 if (typeId

iOS使用xib文件创建一个组件为子控件,进行复用

有些情况下,我们发现有一些界面上的控件是可以复用的 如果每次都拷贝这些控件过去,就是比较麻烦.所以,就用一个xib文件,创建一个view,把要复用的控件,放在里面组成一个view,然后在其他的ViewController里面引用就行了. 这样会方便很多. 第一步:创建一个SingleViewApplication,命名为“xib作为子控件复用”,在项目里New File,选择Cocoa Touch Class,命名为"AAView",点击Next,如图1所示: 图 1 第二步:创建一个

五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时

五种情况下会刷新控件状态(刷新控件状态才能刷新所有子FWinControls的显示): 在TWinControls.PaintControls中,对所有FWinControls只是重绘了边框,而没有整个重绘这些FWinControl子控件.那么什么时候才整个重绘全部FWinControls呢?这时候,就不是一个单纯的WM_PAINT来解决控件重绘的问题了,而是这个TWinControl.UpdateShowing函数: procedure TWinControl.UpdateShowing; v

xib或storyBoard中往scrollView添加子控件

如何在xib或者storyBoard中的scrollView加拖拽子控件,并且能让它可以正常滚动,那么下面就为大家简单演示: 运行环境为:Xcode 7.3 备注:图片较大,如果看不清看可以右键鼠标在新标签中打开图片就很清晰了 1.如图我们往storyBoard拖拽一个scrollView并设置为上下左右约束距离父控件为0 2.当我们往scrollView中添加子控件时候却发现报错了 因为scrollView比较特殊,需要设置contentSize,这个错误和平常我们遇到的错误不一样,因为在这两

iOS开发——实战技术OC篇&amp;点击状态栏ScrollView(包括子控件)自动滚到顶部

点击状态栏ScrollView(包括子控件)自动滚到顶部 其实这种方式我们平时见的还是比较多的,而且适合用户的需求,所以就搬来琢磨了一下,感觉效果还不错 这里就直接将解决思路一一写出来不将代码分段展示了,在代码中我加了详细的注释objective-c的套路和swift基本一样,在最后会将Swift和objective-c的代码一起放上,如果需要直接解决问题的童鞋可以直接将代码拷贝到工程里即可 首先创建一个topWindow继承至NSObject,这里我们考虑将这个功能完全封装起来,所以所有的方法