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 1
@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的组在想啥…… |