一个人建网站,网站建站流程图,图册制作,完整的网站建设平台协议书之前写过ios动态创建控件及添加事件#xff0c;纯手工代码写控件#xff0c;虽然比较灵活#xff0c;但是就是代码量比较多。这次我们通过xib来创建app下载列表项 AppView.xib。一个imageview,一个label,一个button构成
1.创建AppView.xib 2.再创建xib对应的mode#xff0…之前写过ios动态创建控件及添加事件纯手工代码写控件虽然比较灵活但是就是代码量比较多。这次我们通过xib来创建app下载列表项 AppView.xib。一个imageview,一个label,一个button构成
1.创建AppView.xib 2.再创建xib对应的modeAppView.h 继承至UIView 实现效果如下 3.xib页面设计好了之后将控件拖入AppView.h
//
// AppView.h
// iosstudy2024
//
// Created by figo on 2025/2/10.
//#import UIKit/UIKit.hNS_ASSUME_NONNULL_BEGINinterface AppView : UIView
property (weak, nonatomic) IBOutlet UIImageView *iconImg;
property (weak, nonatomic) IBOutlet UILabel *appName;
property (weak, nonatomic) IBOutlet UIButton *btnDownload;endNS_ASSUME_NONNULL_END4.列表配置文件icons.plist
?xml version1.0 encodingUTF-8?
!DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd
plist version1.0
arraydictkeyname/keystringdeepseek/stringkeyicon/keystringdiamond/string/dictdictkeyname/keystring文心一言/stringkeyicon/keystringstar/string/dictdictkeyname/keystring豆包/stringkeyicon/keystringgrape/string/dictdictkeyname/keystringdeepseek/stringkeyicon/keystringwatermenon/string/dictdictkeyname/keystringdeepseek/stringkeyicon/keystringdiamond/string/dictdictkeyname/keystringdeepseek/stringkeyicon/keystringdiamond/string/dictdictkeyname/keystringdeepseek/stringkeyicon/keystringdiamond/string/dictdictkeyname/keystringdeepseek/stringkeyicon/keystringdiamond/string/dictdictkeyname/keystringdeepseek/stringkeyicon/keystringdiamond/string/dict
/array
/plist5.添加控制器AppDownloadViewController.m
//
// AppDownloadViewController.m
// iosstudy2024
//
// Created by figo on 2025/2/10.
//#import AppDownloadViewController.h
#import AppView.h
interface AppDownloadViewController ()
property (nonatomic,strong) NSArray *iconArray;endimplementation AppDownloadViewController
- (NSArray *)iconArray{if(_iconArraynil){NSString *path[[NSBundle mainBundle]pathForResource:icons.plist ofType:nil];_iconArray[NSArray arrayWithContentsOfFile:path];}return _iconArray;
}- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.//[self initApp];[self initAppUseXib];}-(void) initApp{// Do any additional setup after loading the view from its nib.NSUInteger countself.iconArray.count;NSBundle *boundle[NSBundle mainBundle];for(int a0;acount;a){//添加外边框UIView *uiView[UIView new];//new的方式uiView.backgroundColor[UIColor blueColor];CGFloat x50(a%3)*(7510);CGFloat y50(a/3)*(10010);uiView.frameCGRectMake(x, y, 75, 100);//x,y,w,h//外边框内部添加图片UIImageView *uiImageView[UIImageView new];uiImageView.backgroundColor[UIColor greenColor];CGFloat iconW45;CGFloat iconH45;CGFloat x1(uiView.frame.size.width-iconW)*0.5;//相对坐标CGFloat y10;//相对坐标uiImageView.frameCGRectMake(x1, y1, iconW, iconH);//x,y,w,hNSDictionary *dictionaryself.iconArray[a];// NSString *imgPath [NSString stringWithFormat:%/%.jpg, [[NSBundle mainBundle] resourcePath], dictionary[icon]];NSString *imgPath[[NSBundle mainBundle]pathForResource:dictionary[icon] ofType:.jpeg];//照片拖入Assets.xcassets文件夹会找不到资源注意需要项目下新建group命名为Supporting Files再项目外新建文件夹比如icons然后将图片放入icons,再将icons文件夹拖入Supporting Files才能找到否则返回nilUIImage *uiImage[UIImage imageWithContentsOfFile:imgPath];//imageWithContentsOfFile不会缓存每次都重新加载图片
// UIImage *uiImage[UIImage imageNamed:dictionary[icon]];//imageNamed会缓存,照片拖入Assets.xcassets文件夹即可图片非常多会占用很多内存uiImageView.imageuiImage;[uiView addSubview:uiImageView];//外边框内部标题UILabel *uiLabel[UILabel new];uiLabel.backgroundColor[UIColor yellowColor];CGFloat labelWuiView.frame.size.width;CGFloat labelH20;CGFloat x20;//相对坐标CGFloat y2uiImageView.frame.size.height5;//相对坐标uiLabel.frameCGRectMake(x2, y2, labelW, labelH);//x,y,w,huiLabel.textdictionary[name];[uiLabel setTextAlignment:NSTextAlignmentCenter];[uiView addSubview:uiLabel];//外边框内部添加按钮UIButton *uiButton[UIButton new];uiButton.backgroundColor[UIColor redColor];CGFloat buttonW55;CGFloat buttonH20;CGFloat x3(75-55)*0.5;//相对坐标CGFloat y3uiImageView.frame.size.heightuiLabel.frame.size.height55;//相对坐标uiButton.frameCGRectMake(x3, y3, buttonW, buttonH);//x,y,w,h[uiButton setTitle:下载 forState:UIControlStateNormal];[uiButton addTarget:self action:selector(onclick:) forControlEvents:UIControlEventTouchUpInside];uiButton.taga;[uiView addSubview:uiButton];[self.view addSubview:uiView];}
}-(void) initAppUseXib{// Do any additional setup after loading the view from its nib.NSUInteger countself.iconArray.count;NSBundle *boundle[NSBundle mainBundle];for(int a0;acount;a){//添加外边框//通过xib文件获取的方式AppView *uiView[[boundle loadNibNamed:AppView owner:nil options:nil]lastObject];uiView.backgroundColor[UIColor purpleColor];CGFloat x50(a%3)*(7510);CGFloat y50(a/3)*(10010);uiView.frameCGRectMake(x, y, 75, 100);//x,y,w,h//外边框内部添加图片uiView.iconImg.backgroundColor[UIColor greenColor];NSDictionary *dictionaryself.iconArray[a];NSString *imgPath[[NSBundle mainBundle]pathForResource:dictionary[icon] ofType:.png];//照片拖入Assets.xcassets文件夹会找不到资源注意需要项目下新建group命名为Supporting Files再项目外新建文件夹比如icons然后将图片放入icons,再将icons文件夹拖入Supporting Files才能找到否则返回nilUIImage *uiImage[UIImage imageWithContentsOfFile:imgPath];//imageWithContentsOfFile不会缓存每次都重新加载图片
// UIImage *uiImage[UIImage imageNamed:dictionary[icon]];//imageNamed会缓存,照片拖入Assets.xcassets文件夹即可图片非常多会占用很多内存uiView.iconImg.imageuiImage;//外边框内部标题uiView.appName.backgroundColor[UIColor yellowColor];uiView.appName.textdictionary[name];[uiView.btnDownload addTarget:self action:selector(onclick:) forControlEvents:UIControlEventTouchUpInside];uiView.btnDownload.taga;[self.view addSubview:uiView];}
}-(void)onclick:(UIButton *)uiButton{NSLog(%d点击下载,uiButton.tag);
}
end6.SceneDelegate.m修改当前controller为AppDownloadViewController
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {AppDownloadViewController * viewController [[AppDownloadViewController alloc]init];self.window.rootViewControllerviewController;
}