
1 chchwy 2013-07-15 22:58:00 +08:00 何不具你遭遇的困? |
2 alexrezit 2013-07-15 23:00:56 +08:00 不熟悉 IB 的话会很麻烦的. |
3 tab 2013-07-16 00:32:29 +08:00 赶工的时候尽量少变动,可以把遇到的问题记下来,项目结束后带着问题学习。不过我一直认为,不会用IB的人很难写出规范的iOS UI,因为里头有些Apple的控件机制不好理解。个人理解的界面编程三层境界:纯代码->可视化编程->两者结合,融会贯通。IB确实很方便,如果你有个大显示器配合Storyboard那就更爽了。 |
4 refresh OP |
5 damngood 2013-07-16 10:57:13 +08:00 |
6 tab 2013-07-16 11:13:21 +08:00 @refresh 从可视化开始会让多数人一头雾水,很多人不用IB恐怕正是这个时候留下的阴影。 你现在的问题是布局的代码较多,用了IB或者Storyboard直接就解决了。Storyboard就是组装用的,Apple自己的控件本身很完善了,如果不是较为复杂且经常重用的UI没必要组件化,消息传递啥的那样反倒麻烦,当然这个度得自己把握。 |
7 nil 2013-07-16 12:12:14 +08:00 |
8 ytzong 2013-07-16 13:12:32 +08:00 IB 构建 UI 的飘过 月经话题 |
9 refresh OP |
10 damngood 2013-07-16 14:14:27 +08:00 @refresh 我刚好反过来了.. 要是写 html css 那些 Web 组件也能像写 iOS 那样纯代码写那该多好呀.. :) |
11 nil 2013-07-16 15:22:04 +08:00 @implementation UIView (layout) - (CGFloat)left { return self.frame.origin.x; } - (void)setLeft:(CGFloat)x { CGRect frame = self.frame; frame.origin.x = x; self.frame = frame; } @end 代码不全贴了,给UIView扩展一些帮助方法,直接写view.left = xxx; view.centerX = xx;总感觉比IB里面拖来拖去,各种设置各种找舒服多了吧; 复杂的view直接写到subclass的layoutsubview方法里面,简单的布局直接写到loadview里面; 速度上应该不慢吧,灵活性上,代码重用上,能甩IB几条街了吧。。。 |
12 refresh OP @nil 嗯,这样也不错,不过UIButton与UILabel这类怎么办,全部重写么? 这个项目不错,用宏的方式添加了很多layout。 https://github.com/mvx24/CGRectPositioning |
14 so898 2013-07-16 19:01:37 +08:00 公司项目,从SB到代码……别拦我……哭泣中…… |
15 refresh OP @sumanx UIButton是UIView没错,但有办法给它们统一加上left, top这些属性吗,需要全部重载啊,或者有啥方法我不知道的 |
16 PrideChung 2013-07-16 19:28:14 +08:00 @refresh 显然是用Catagory啊。 |
17 PrideChung 2013-07-16 19:29:14 +08:00 @refresh 再加上objc_runtime。 |
18 wtl 2013-07-16 19:50:58 +08:00 静态的布局用@nil说的给UIView加个category 动态的用autolayout 不过写起来挺长的 去找些第三方的库 可以少些点 比如这样 [button alignCenterYWithView:superView] |
19 meepoli 2013-07-16 20:26:43 +08:00 我只能说,不会IB当你想有一个工作上的提升的时候,太吃亏了。 IB和纯Coding是都需要掌握的。也没有哪种方式比哪种方式高级的说法。 |
22 refresh OP @wtl @PrideChung 求教,UIView的Catagory怎样才让UIButton和UILabel也能用?我现在需要将UIButton转成UIView才能使用自定义的Category。 如: ((UIView *)btn).left = 10; 我希望是可以 view.left = 10; 也可以 btn.left = 10; |
23 refresh OP 好吧,我搞错了,抱歉,是可以的。 |
25 wity_lv 2013-07-17 10:42:42 +08:00 IB什么东西? 从接触iOS开始,就一直用StoryBoard. 难道这个是SB ? ... StoryBoard 拖结构, UIViewController设置成自己的自定义类型。 StoryBoard 拖出来的UI需要复用,建多个StoryBoard. 多人开发的情况,一人一个StoryBoard. |
27 alexrezit 2013-07-17 12:34:09 +08:00 @wity_lv 你入行太晚了. 我刚开始玩儿的时候还是 iOS 3.x 呢, IB 是 Interface Builder 的缩写, 当时 Interface Builder 是单独的一个 app, 用来创建和修改 xib 文件的. |
28 wity_lv 2013-07-17 13:06:17 +08:00 |
29 railgun 2013-07-17 13:53:58 +08:00 AutoLayout确实是个大坑,没有autosizemask直观。scrollview的autolayout搞死我了…… 除此之外IB还是很好用的。能省很多代码。 代码和IB结合的话,确实会有一些麻烦,特别是如果父类view或者controller有控制view的代码的时候…… |
31 PrideChung 2013-07-17 16:43:23 +08:00 @railgun 电磁炮打蚊子肯定没电蚊拍好用。 |
32 sumanx 2013-07-18 11:18:37 +08:00 @refresh 因为它们都是UIView,所以只要给UIView加上了这些属性,UIButton、UILabel就都自动有了。 |
33 phpuser 2013-07-19 00:48:29 +08:00 我看有人用StoryBoard布局,然后几乎不用IBOutlet,而是用tag获取对象操作,有何优缺点呢? |
34 PrideChung 2013-07-19 00:55:54 +08:00 @phpuser 不建议用tag,我也只试用过一次,马上重构掉了。很多人说storyboard是quick and dirty,我认为tag是比storyboard更加dirty的东西。 |
36 celon 2013-07-19 10:24:46 +08:00 隐约觉得有种段子的感觉: 玩单片机的看不起用linux的 用linux的看不起用windows的 …… 用代码构建的看不起用Storyboard的 |
37 moyerock 2013-07-19 10:30:51 +08:00 硬编码layout.. |
38 refresh OP |
39 mrschoba 2013-07-19 11:56:07 +08:00 写 html/css 方式来写 UI,可以试试 Pixate,个人觉得用代码构建 UI 和用 Storyboard 没有孰优孰劣,按自己喜欢就可以。哪个自己写起来有效率就用哪个呗! |
41 PrideChung 2013-07-19 18:07:08 +08:00 项目紧的时候对陌生技术的引入要慎之又慎,血的教训。 |
42 phpuser 2013-07-19 22:13:46 +08:00 @PrideChung @alexrezit 我是看一个巨大无比的TableViewCell里面,很多UILabel,UIImageView直接用tag(不同分段100开头,200开头)让后用不同数组的往不同的tag段里面赋值。 感觉还挺好啊,至少不用拉那么多的IBOutlet,不用一个的赋值。而且 iPad , iPhone 不同的界面不用再拉一次Outlet。 这种场景也不合适么? 那么Tag是干什么用的?其存在的意思是什么? 谢谢。 |
44 alexrezit 2013-07-20 09:37:47 +08:00 |
45 damngood 2013-07-20 10:36:13 +08:00 |
46 refresh OP @damngood 我认为tag是一个标识,用于识别subview的,作者的意思是,你不要用tag的保存数据,如果你要保存数据,应该使用属性而非tag。 |
48 alexrezit 2013-07-20 12:03:21 +08:00 @damngood 是的, 我见过某些国内的开发者用 tag 来记录属性. 我之所以说不要使用 tag 就是因为少有人知道怎么正确并灵活地使用. |
49 allenhsu 2013-07-26 15:12:49 +08:00 在我的经验中,有时候 xib 的作用不是布局而是初始化 views,有时候我会在 xib 里初始化若干 views 用 IBOutlet 链接,此时他们没有父子关系和相对位置关系,仅仅是若干被初始化的独立组件,然后在 viewDidLoad 中来组装他们的父子关系和相对位置。 |
52 tgfbeta 2013-07-30 09:32:51 +08:00 刚刚把项目的最核心的view和view controller给整到storyboard。 最大的障碍是: UIView 不能 加subview!不知道水果负责IB的组在想啥…… |
53 tokki 2013-07-30 10:20:17 +08:00 看这个讨论这么激情 打算回头再取玩玩ios-,- |
54 tgfbeta 2013-07-30 10:48:09 +08:00 刚刚把项目的最核心的view和view controller给整到storyboard。 最大的障碍是: UIImageView 不能 加subview!不知道水果负责IB的组在想啥…… |