Storyboard 系列文章
[iOS] Storyboard (1) -- 入門:API 篇
[iOS] Storyboard (2) --入門:約束篇
[iOS] Storyboard (3) -- 使用:常用Tips
[iOS] Storyboard (4) -- 實踐:問題總結(jié)
[iOS] Storyboard (4) -- 實踐:UIScrollView
[iOS] Storyboard (4) -- 實踐:UICollectionView
1. 無法隱藏 UITableView 的區(qū)頭/區(qū)尾
在使用 UITableView
時淑玫,很多時候需要隱藏表的區(qū)頭和區(qū)尾荒叶,如果設置的區(qū)頭/區(qū)尾的高度為1沒有效果终吼,需要注意 Estimate
(預估) 是否為 0酪惭,如果不為0,是無法隱藏的:
2. 如何設置 GreenView.top = RedView.bottom
無論是使用面板或者連線,無法直接設置某個控件的top
等于另一個控件的bottom
怜姿,可以先添加一組約束慎冤,例如相等,兩個控件可能會重合沧卢,然后編輯 GreenView
的 top
約束粪薛,修改為等于 RedView
的bottom
:
3. 在 Storyboard 面板設置自定義屬性, IBInspectable
在屬性面板并不能設置所有的屬性, 例如自定義的屬性, 默認不會在屬性面板展示的; 但是我們可以通過添加屬性修飾符 IBInspectable
來在面板中展示相關的屬性設置;
這里以為 UIView
添加圓角和邊框為例, 為此我寫了一個分類, 添加了如下屬性:
// UIView+corner.h
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIView (corner)
@property (nonatomic,assign) IBInspectable CGFloat cornerRadius;
@property (nonatomic,assign) IBInspectable CGFloat borderWidth;
@property (nonatomic,strong) IBInspectable UIColor *borderColor;
@end
NS_ASSUME_NONNULL_END
// UIView+corner.m
#import "UIView+corner.h"
@implementation UIView (corner)
- (void)setCornerRadius:(CGFloat)cornerRadius {
self.layer.cornerRadius = cornerRadius;
}
- (void)setBorderWidth:(CGFloat)borderWidth {
self.layer.borderWidth = borderWidth;
}
- (void)setBorderColor:(UIColor *)borderColor {
self.layer.borderColor = borderColor.CGColor;
}
- (CGFloat)cornerRadius {
return self.layer.cornerRadius;
}
- (CGFloat)borderWidth {
return self.layer.borderWidth;
}
- (UIColor *)borderColor {
return [UIColor colorWithCGColor:self.layer.borderColor];
}
@end
每個屬性都添加了 IBInspectable
修飾符, 這時在Storyboard
或者 xib
中, 就會看到新加的這些屬性:
這樣就可以在面板中添加這些屬性設置;
4. 在 Storyboard 中連線設置自定義控件代理
我們知道, 在 Storyboard
中添加的 UITableView
可以使用連線的方式添加代理對象, 那么我們自定義的一些控件代理是不是也可以這樣設置呢?
答案是肯定, 只需要在代理屬性中添加 IBOutlet
修飾即可;
這里我自定義了一個 View
, 添加了一個代理:
#import <UIKit/UIKit.h>
@protocol LQViewDeledate <NSObject>
@end
NS_ASSUME_NONNULL_BEGIN
@interface LQView : UIView
@property (weak, nonatomic) IBOutlet id <LQViewDeledate> delegate ;
@end
NS_ASSUME_NONNULL_END
在 Storyboard
中選中該控件, 右鍵即可添加連線:
前提是, 需要將此類指定為我們自定義的類: