书架页面

效果图:

代码结构图:

代码:

RootTableViewCell.h

#import <UIKit/UIKit.h>

@interface RootTableViewCell : UITableViewCell
@property(nonatomic,strong) UIButton * bookLeft;
@property(nonatomic,strong) UIButton * bookMiddle;
@property(nonatomic,strong) UIButton * bookRight;
@end

RootTableViewCell.m

#import "RootTableViewCell.h"

@implementation RootTableViewCell
@synthesize bookLeft;
@synthesize bookMiddle;
@synthesize bookRight;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code

        UIImageView  * imageview= [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 416/3)];
        imageview.image = [UIImage imageNamed:@"BookShelfCell.png"];
        [self addSubview:imageview];

        bookLeft = [UIButton buttonWithType:UIButtonTypeCustom];
        bookLeft.frame = CGRectMake(10, 10, 280/3, 376/3-20);
        bookLeft.tag = 1;

        bookMiddle = [UIButton buttonWithType:UIButtonTypeCustom];
        bookMiddle.frame = CGRectMake(20+280/3, 10, 280/3, 376/3-20);
        bookMiddle.tag = 2;

        bookRight = [UIButton buttonWithType:UIButtonTypeCustom];
        bookRight.frame = CGRectMake(30+280/3*2, 10, 280/3, 376/3-20);
        bookRight.tag = 3;

        [self addSubview:bookLeft];
        [self addSubview:bookMiddle];
        [self addSubview:bookRight];
    }
    return self;
}

RootViewController.h

#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController

<UITableViewDataSource,UITableViewDelegate>

{

NSMutableArray * dataArray;

UITableView * myTableView;

}

@end

RootTableViewCell.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //初始化背景图
    [self initBackGroundView];

}
#pragma -mark -functions
-(void)initBackGroundView
{
    self.title=@"书架页面";

    dataArray=[[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9", nil];

    myTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 416) style:UITableViewStylePlain];
    myTableView.delegate = self;
    myTableView.dataSource = self;
    [self.view addSubview:myTableView];
}
#pragma -mark -UITableViewDelegate
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 3;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 376/3;

}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    RootTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"ID"];
    if(cell == nil)
    {
        cell =[[RootTableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"ID"];
    }

    cell.tag = indexPath.row;

    [cell.bookLeft addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
    [cell.bookMiddle addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
    [cell.bookRight addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];

    [cell.bookLeft setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.jpg",[dataArray objectAtIndex:indexPath.row*3]]] forState:UIControlStateNormal];
    [cell.bookMiddle setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.jpg",[dataArray objectAtIndex:indexPath.row*3+1]]] forState:UIControlStateNormal];
    [cell.bookRight setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.jpg",[dataArray objectAtIndex:indexPath.row*3+2]]] forState:UIControlStateNormal];
    NSLog(@"--celll.tag--%i",cell.tag);
    return cell;

}
#pragma -mark -doClickActions
-(void)buttonClick:(UIButton*)btn
{
    RootTableViewCell * cell = (RootTableViewCell *)[[btn superview] superview];
    NSIndexPath * path = [myTableView indexPathForCell:cell];
    NSLog(@"--点击图片的时候,所在的坐标-(%i,%i)--",path.row,btn.tag);
}
时间: 2024-11-09 03:38:35

书架页面的相关文章

【代码笔记】书架页面

一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewController <UITableViewDataSource,UITableViewDelegate> { NSMutableArray * dataArray; UITableView * myTableView; } @end RootViewController.m

Vue2.5 实战微信读书 媲美原生App的企业级web书城

第1章 课程介绍介绍阅读器项目背景.功能结构.技术栈和功能演示,快速了解整个课程安排和内容. 第2章 项目需求及阅读器引擎介绍介绍项目需求和阅读器的开发原理,并搭建Node.js和vue-cli 3.0开发环境. 第3章 项目准备完成项目开发前的准备工作,讲解如何引入字体图标.Web字体.rem.样式重置表,详细介绍vuex的基本原理及mapGetters的实现原理,搭建基于Nginx的静态资源服务器. 第4章 阅读器--标题菜单.字号字体及主题设置功能开发讲解如何实现阅读器的解析和渲染.手势翻

Vue2.5实战微信读书 媲美原生App的企业级web书城

第1章 课程介绍介绍阅读器项目背景.功能结构.技术栈和功能演示,快速了解整个课程安排和内容.1-1 导学 试看1-2 课程学习指南 第2章 项目需求及阅读器引擎介绍介绍项目需求和阅读器的开发原理,并搭建Node.js和vue-cli 3.0开发环境.2-1 项目需求分析2-2 阅读器原理介绍2-3 ePub标准介绍2-4 epubjs阅读器引擎介绍2-5 安装Node.js环境2-6 vue-cli 3.0搭建方法(原型开发)2-7 vue-cli 3.0搭建方法(脚手架创建项目)2-8 项目技

iOS实现书架布局样式【一些电子书的首页】

本文实现了类似电子书首页,用来展示图书或小说的布局页面,书架列表[iPhone6模拟器],屏幕尺寸还没进行适配,只是做个简单的demo[纯代码实现方式] 实现采用的是UICollectionView和UICollectionViewFlowLayout.关于UICollectionView的详细讲解请参考http://blog.csdn.net/meegomeego/article/details/16953489 一.实现layout的DecorationView // // FWBookSh

减少手机页面跳转的方法(转)

在标签页还没有诞生的时候, 浏览器对关键词的搜索似乎只能另起窗口显示搜索结果.且这些结果页散乱无序,假若再返回某一页面,就要从桌面一堆窗口里或者一长串任务栏内去翻找,相信现在用惯有标签页浏览器的同学,应该没有谁会愿意再去用这样的产品.这是一个典型的页面跳转例子,并且散乱无序是用户很头痛的事情.在用户对操作体验越来越重视的今天,让用户无形中享受我们精心设计的操作体验越发显的重要.通过减少页面跳转,减少用户的重复操作就是其中重要的一点,下面列举了一些常见的交互展现形式. 1.浮动弹窗 为了避免跳转页

全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口

通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 首页书籍信息 先来回顾一下首页书籍都有哪些信息: 从下面的图片可以看出目前一本图书信息主要有: 图片字段 名称字段 作者字段 出版社字段 除了以上前端页面中可见的信息外,在服务器开发中还需要给每一条记录(数据)都加上下面的几个字段: 创建时间字段 更新时间字段 删除时间字段 最后完成的数据库表如下: ps:由于数据库是直接导入的,之前的数据库是没有时间字段的,所以前

全栈项目|小书架|服务器端-NodeJS+Koa2 实现书籍详情接口

通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 书籍详情分析 书籍详情页面如下: 从上图可以分析出详情页面大概有以下几个接口: 获取书籍详情信息 获取用户对书籍的喜欢状态接口 喜欢/不喜欢书籍接口 获取评论列表 写评论接口 以上的接口,有的数据可以直接从已存在的数据表中去获取,比如:书籍详情信息,而其他新接口就需要创建对应的model,然后根据model创建相应的数据表. 比如 用户对书籍的喜欢操作,可以创建li

移动页面HTML5自适应手机屏幕宽度

网上关于这方面的文章有很多,重复的东西本文不再赘述,仅提供思路,并解释一些其他文章讲述模糊的地方. 1.使用meta标签,这也是普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统. 首先解释该标签的含义: <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, max

WEB页面,WEB环境版本,数据库,整站备份脚本

#!/bin/bash # #WEB页面,WEB环境版本,数据库,整站备份脚本 #当发生某个原因导致整个服务器无法恢复时,利用上面备份的相关数据即可重做一台一样的服务器 date_a=`date +%Y%m%d-%H%M%S` mkdir -p /web_bak/${date_a}/conf &> /dev/null mkdir -p /web_bak/${date_a}/web &> /dev/null mkdir -p /web_bak/${date_a}/mysql &a