下面是小编给大家整理的IOS 类似于网易新闻首页新闻轮播的组件,本文共4篇,欢迎大家借鉴与参考,希望对大家有所帮助。

篇1:IOS 类似于网易新闻首页新闻轮播的组件
、需求分析
1、可横向循环滚动新闻图片
2、滚动到对应图片时显示新闻标题
3、每张新闻图片可点击
4、有pageControl提示
5、具有控件的扩展能力
二、设计实现
1、显示图片使用SDWebImage第三方库,可缓存图片、通过url异步加载图片
2、使用一个横向滚动的UITableView实现循环滚动
3、使用一个黑色半透明的背景、白色文字的UILabel显示标题
4、定义每个新闻的数据结构:
/** @brief 默认使用本地地址,如果本地没有的话,使用网络图片 */
@interface PhotoNewsModel : NSObject
/** @brief 加载时展示的图片*/
@property (nonatomic, strong) UIImage *loadingImage;
/** @brief 图片本地的地址 */
@property (nonatomic, strong) NSString *localPath;
/** @brief 新闻图片的地址 */
@property (nonatomic, strong) NSString *photoUrl;
/** @brief 新闻标题 */
@property (nonatomic, strong) NSString *title;
@end
5、代理协议:
@protocol UIPhotoNewsViewDelegate
/**
* 取得多少条图片新闻
*
* @param photoNews 控件自身
*
* @return 图片新闻的个数
*/
- (NSUInteger)photoNewsCount:(UIPhotoNewsView *)photoNews;
/**
* 返回第几个图片新闻的model
*
* @param photoNews 控件自身
* @param index
*
* @return 返回描述图片新闻的model
*/
- (PhotoNewsModel *)photoNews:(UIPhotoNewsView *)photoNews
photoModelAtIndex:(NSUInteger)index;
/**
* 图片新闻点击的回调
*
* @param photoNews 控件自身
* @param model 点击新闻对应的model
*/
- (void)photoNews:(UIPhotoNewsView *)photoNews
photoDidClick:(PhotoNewsModel *)model;
@end
6、循环滚动如何实现
a)将要展示的数据复制一份相当于 1、2、3、4|1、2、3、4
b)数据初始化时,定位到第二份的1这里
c)滚动到前面的1或者2时,设置跳转到第二份的1和2
d)关键代码:
- (void)makeCycleScroll
{
if(self.realCount >= 2)
{
CGFloat currentOffsetX = self.contentTableView.contentOffset.x;
CGFloat currentOffSetY = self.contentTableView.contentOffset.y;
CGFloat contentHeight = self.contentTableView.contentSize.height;
if (currentOffSetY < (contentHeight / 8.0)) {
self.contentTableView.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY + (contentHeight/2)));
}
if (currentOffSetY >= ((contentHeight * 6)/ 8.0)) {
self.contentTableView.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY - (contentHeight/2)));
}
}
}
篇2:组件+PHP+MYSQL的新闻发布系统
mysql
var x:Number = 60;
var y:Number = 30;
System.useCodepage = true;
function inposition(myobject:Object, mylabelname:String, x0:Number, y0:Number):Void {
//返回标签的位置和标志
myobject.text = mylabelname;
myobject.move(x0, y0);
return;
}
function checkin(my_txt:Object):Boolean {
//检测输入文本是否为空
if (my_txt.text == “”) {
trace(my_txt._name+“_empty”);
return false;
} else {
trace(my_txt._name+“_nonempty”);
return true;
}
}
function clearin(my_txt) {
//清空输入文本
my_txt.text = “”;
}
function adddone {
//当数据写入完毕就显示开始的状态
_level0.myaa.addmynews.mesin._visible = 1;
//trace(myaa.addmynews.mesin._visible);
myaa.addmynews.clear1._visible = 1;
myaa.addmynews.sure1._visible = 1;
}
function loginnow() {
//登陆后的状态
trace(“back”);
//var back = myaa.inlogin.createChild(“Button”, “b1”, {label:“返回”});
//back.move(x+120, y+60);
//back.setSize(50, 20);*/
clearbtn.label = “返回”;
surebtn._visible = 0;
mynamelabel._visible = 0;
mypasslabel._visible = 0;
inmyname._visible = 0;
inmypass._visible = 0;
var newsadd = myaa.createChild(“View”, “addmynews”, {label:“.: Add news :.”});
var messages_txt = myaa.addmynews.createChild(“TextInput”, “mesin”);
//trace(typeof (inmyname.text));
var messign = myaa.addmynews.createChild(“Label”, “messigns”);
messages_txt.wordWrap = true;
inposition(messign, “News”, 25, 0);
messages_txt.move(25, 20);
messages_txt.text = “your news”;
messages_txt.setSize(250, 180);
var surebtn1 = myaa.addmynews.createChild(“Button”, “sure1”, {label:“确定”});
surebtn1.setSize(50, 20);
surebtn1.move(150, 210);
var clearbtn1 = myaa.addmynews.createChild(“Button”, “clear1”, {label:“清除”});
clearbtn1.setSize(50, 20);
clearbtn1.move(220, 210);
var addform. = new Object();
addform.click = function(eventObj) {
var nowlabel = (eventObj.target.label);
trace(nowlabel);
if (nowlabel == “确定”) {
trace(“add now”);
messages_txt._visible = 0;
clearbtn1._visible = 0;
surebtn1._visible = 0;
loadadd(“addnews”, messages_txt.text);
} else if (nowlabel == “清除”) {
clearin(messages_txt);
//testa.removeMovieClip();
trace(“clear”);
}
};
surebtn1.addEventListener(“click”, addform);
clearbtn1.addEventListener(“click”, addform);
}
function loginout() {
//退出后的状态,返回原来的
myloading.move(0, 0);
inmyname._visible = 1;
inmypass._visible = 1;
inmyname.text = “”;
inmypass.text = “”;
surebtn._visible = 1;
mynamelabel._visible = 1;
mypasslabel._visible = 1;
clearbtn.label = “清除”;
myloading.text = “”;
myaa.destroyChildAt(myaa.numChildren-1);
}
var root = this;
addphp = new LoadVars();
function loadadd(url:String, mes:String) {
//写入的数据
var loading1 = myaa.addmynews.createChild(“Label”, “loadings”);
loading1.autoSize = true;
trace(loading1);
inposition(loading1, “ loading\nplease wait...”, 115, 90);
addphp.messages = mes;
//loginnow();
addphp.onLoad = function(success) {
if (success) {
addphp.messages = mes;
adddone();
loading1.text = “”;
trace(“done”);
} else {
trace(“no”);
//testa = myaa.inlogin.createChild(“Button”, “test”, {label:myphp.name0});
}
};
addphp.sendAndLoad(url+“.php”, addphp, “POST”);
//
}
myphp = new LoadVars();
function loadphp(url:String, myname0:String, mypass0:String) {
myloading.text = “loading data...”;
//loginnow();
myphp.onLoad = function(success) {
if (success) {
myloading.text = “”;
//trace(“load done”);
//检验登陆
if (myname0 == myphp.name0 && mypass0 == myphp.passwords) {
//trace(“ok”);
loginnow();
myloading.move(70, 50);
myloading.text = “welcome ”+myphp.name0;
//testa = myaa.inlogin.createChild(“Button”, “clear”, {label:“fit”});
} else {
inmyname.text = “”;
inmypass.text = “”;
trace(“no”);
//testa = myaa.inlogin.createChild(“Button”, “test”, {label:myphp.name0});
}
}
};
myphp.sendAndLoad(url+“.php”, myphp, “POST”);
//
}
var root = this;
myaa.createChild(“View”, “innew”, {label:“.: News :.”});
myaa.createChild(“View”, “inlogin”, {label:“.: Login :.”});
myaa.createChild(“View”, “coming”, {label:“.: Coming soon :.”});
var mynamelabel = myaa.inlogin.createChild(“Label”, “myname”);
inposition(mynamelabel, “name:”, x, y);
var myloading = myaa.inlogin.createChild(“Label”, “loading”);
myloading.autoSize = true;
myloading.text = “”;
var mypasslabel = myaa.inlogin.createChild(“Label”, “mypass”);
inposition(mypasslabel, “password:”, x, y+32);
var copyright = myaa.inlogin.createChild(“Label”, “copy”);
copyright.autoSize = true;
copyright.move(75, 200);
copyright.text = “Copyright ?ShuhanKuang\n All Rights Reserved”;
var inmyname = myaa.inlogin.createChild(“TextInput”, “namein”);
//trace(typeof (inmyname.text));
inmyname.move(x+65, y);
var inmypass = myaa.inlogin.createChild(“TextInput”, “passin”);
inmypass.password = true;
inmypass.move(x+65, y+30);
var surebtn = myaa.inlogin.createChild(“Button”, “sure”, {label:“登陆”});
surebtn.setSize(50, 20);
surebtn.move(x+60, y+60);
var clearbtn = myaa.inlogin.createChild(“Button”, “clear”, {label:“清除”});
clearbtn.setSize(50, 20);
clearbtn.move(x+120, y+60);
var loginform.:Object = new Object();
myaa.selectedIndex = 1;
loginform.click = function(eventObj) {
//从标签来取的动作
var nowlabel = (eventObj.target.label);
trace(nowlabel);
if (nowlabel == “登陆”) {
if (checkin(inmyname) && checkin(inmypass)) {
trace(“Load php now”);
loadphp(“checkmeb”, inmyname.text, inmypass.text);
}
} else if (nowlabel == “清除”) {
clearin(inmyname);
clearin(inmypass);
//testa.removeMovieClip();
trace(“clear”);
} else if (nowlabel == “返回”) {
loginout();
}
};
surebtn.addEventListener(“click”, loginform);
clearbtn.addEventListener(“click”, loginform);
/////////////////news////////
var newinfo = myaa.innew.createChild(“TextArea”, “newarea”);
newinfo.move(2, 2);
newinfo.hScrollPolicy = “off”;
newinfo.wordWrap = true;
newinfo.editable = false;
//newinfo.backgroundColor = 0x123456;
newinfo.multiline = true;
newinfo.setSize(294, 250);
var mynewsinfo = new LoadVars();
loadnews(“show”);
function loadnews(url:String) {
//载入新闻的内容
//trace(1111111111)
mynewsinfo.onLoad = function(success) {
if (success) {
newinfo.text = mynewsinfo.messages;
}
};
mynewsinfo.load(url+“.php?”+random(99999), mynewsinfo, “POST”);
//
}
myaachage = new Object();
myaachage.change = function(eventObj) {
if (eventObj.target.selectedIndex == 0) {
loadnews(“show”);
}
};
myaa.addEventListener(“change”, myaachage);
///////////////////////我这里没做太多的解释了,因为组件的应用都是在自带的帮助可以找到的,
组件+PHP+MYSQL的新闻发布系统
,
//////////////////
里面有了MYSQL了。。。
你用phpMyAdmin运行就可以了。
[下载原文件]
篇3:如何在ESPCMS首页添加像新闻推荐那样的栏目
1. 进入ESPCMS企业网站系统后台,“内容”—“内容模型管理”
2. 点击添加内容模型
3. 填写模型名称,选择“个性化设置”,这个可以参考新闻模型的设置
4. 点击菜单栏“内容”—“分类管理”
5. 点击“添加主分类”,选择所属模型为你刚创建的模型,填写上分类名称,OK,之后再发布一条内容,此处大家都会,就省略了。
6. 打开templatesdefaultcnindex.html
class=“spantitle”>新闻推荐更多 {%get name=list class=mid:1,max:7%} {%forlist from=$array key=i%} {%$array[i].title%} {%/forlist%} {%/get%}
把上面这段代码复制到下面,然后修改两个地方:
一是把下面代码里面的class=4的数值,改为分类的id数值,可以去“内容”—“分类管理”查看,
更多
二是把下面这段代码里面的mid:1的数值,改为模型的id值,可以去“内容”—“内容模型管理”查看。另外max:7,这个数值是显示的条数。
{%get name=list class=mid:1,max:7%}
OK,搞定!
篇4:令人震撼:哈佛大学图书馆凌晨4点半的景象-网易新闻论坛
令人震撼:哈佛大学图书馆凌晨4点半的景象-网易新闻论坛
令人震撼:哈佛大学图书馆凌晨4点半的景象 作者:赏心悦目 哈佛的毕业生有一个传统:捐助哈佛。哈佛的资金三分之一来自捐助。很多学生的家长,也都是哈佛校友哈佛人。一代一代的哈佛人,进入社会上层又把财富反馈给母校哈佛。每年的捐款,是哈佛收入的重要部分。 给予往往是相互的。是先有哈佛的给予还是先有给予哈佛,这个问题或如鸡生蛋还是蛋生鸡那样说不清。或者只有让哈佛告诉你。 哈佛没有高楼大厦,只有新英格兰的'红砖墙。即使诺贝尔奖获得者也不过在校园有一个决不起眼的停车位。毕竟哈佛最起眼的是100座图书馆,尤其是一个个像图书馆那样的人,或者说,一个人就是一座图书馆。哈佛或哈佛人是不需要任何包装的。 有人称史华慈是哈佛的一位类似东方的大儒,在他动过癌症手术的82岁高龄的时候,依然天天早上按时去办公室工作,即使有时要倒下。而他办公室里挂大衣的两个衣架,竟是用铁丝胡乱缠绕而成的。 某教授对学生说,你学我这门课,你就一天只能睡两小时。学生想,那么,我学四门课,我就没有睡眠时间了,我就得倒贴睡眠时间了。 哈佛的博士生,可能每3天要啃下一本大书,每本几百页,还要交上阅读报告。哈佛过桥便是波士顿,前人类学系主任张光直在哈佛读博士那几年,没有上过桥没有去过波士顿。 哈佛学生或是哈佛教授,首先不是一份荣誉,而是一种证明。 人到底可以有怎样的意志力,人到底可能有怎样的发挥潜力? 哈佛告诉你。 哈佛是一种象征,最高智慧的象征,最高学府的象征。 人的意志,人的才情,人的理想,为什么在哈佛能兑现? 哈佛告诉你。 哈佛的学生餐厅,很难听到说话的声音,每个学生端着比萨可乐坐下后,往往顺手把大衣扔地上,然后边吃边看书或是做笔记。我就没见过哪个学生光吃不读的,更没见过哪个学生边吃边闲聊的。感觉里,餐厅不过是一个可以吃东西的图书馆,是哈佛正宗100个图书馆之外的另类图书馆。 哈佛的医院,同样的宁静,同样的不管有多少候诊的人也无一人说话,无一人不在阅读或记录。医院实在也只是图书馆的延伸。 于是DD 哈佛产生的诺贝尔奖得主有33位。 哈佛产生的美国总统有7位。 哈佛校园里,不见华服,不见化妆,更不见晃里晃荡,只有匆匆的脚步,坚实地写下人生的篇章。 哈佛不是神话,哈佛只是一个证明,人的意志、精神、怀抱、理想的证明。 英国媒体报道,《2009年世界大学排行榜》10月8日产生,哈佛大学蝉联6年排名榜首。★新闻稿件
★摘抄新闻
★新闻稿子
★新闻写作
★新闻报告
★新闻作文
文档为doc格式