- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 UILabel 作为我的 UIPickerView 的自定义 View ,并且我试图将标签从左侧填充 10px 左右。但是,无论我将 UILabel 设置为哪个框架,它都会被忽略。
我基本上是在尝试制作一个日期选择器,在年份组件中有一个“未知”选项。我是 iOS 开发的新手。子类化 UIDatePicker 并添加“未知”选项是否可能/会更优雅?
这是我的代码:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel* tView = (UILabel*)view;
if (!tView)
{
tView = [[UILabel alloc] initWithFrame:** Any CGRect here **];
tView.backgroundColor = [UIColor redColor];
tView.font = [UIFont boldSystemFontOfSize:16.0];
if (component == 0)
{
tView.textAlignment = NSTextAlignmentCenter;
}
}
// Set the title
NSString *rowTitle;
if (component == 0)
{
rowTitle = [NSString stringWithFormat:@"%d", (row + 1)];
}
else if (component == 1)
{
NSArray *months = [[NSArray alloc] initWithObjects:@"January", @"February", @"March", @"April", @"May", @"June", @"July", @"August", @"September", @"October", @"November", @"December", nil];
rowTitle = (NSString *) [months objectAtIndex:row];
}
else if (component == 2)
{
if (row == 0)
{
rowTitle = @"- Unknown -";
}
else
{
NSDateFormatter *currentYearFormat = [[NSDateFormatter alloc] init];
currentYearFormat.dateFormat = @"YYYY";
NSInteger currentYear = [[currentYearFormat stringFromDate:[NSDate date]] intValue];
rowTitle = [NSString stringWithFormat:@"%d", (currentYear - row)];
}
}
tView.text = rowTitle;
return tView;
}
最佳答案
不要使用 UILabel
直接地。对你来说最简单的方法是...
通过...定义宽度/高度
pickerView:widthForComponent:
pickerView:rowHeightForComponent:
UIView
创建自定义类并返回这个对象。在您的自定义
UIView
, 添加
UILabel
subview 和移动
UILabel
在
layoutSubviews
你的类(class)。像这样的东西...
// MyPickerView.h
@interface MyPickerView : UIView
@property (nonatomic,strong,readonly) UILabel *label;
@end
// MyPickerView.m
@interface MyPickerView()
@property (nonatomic,strong) UILabel *label;
@end
@implementation MyPickerView
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if ( self ) {
_label = [[UILabel alloc] initWithFrame:CGRectZero];
}
return self;
}
- (void)layoutSubviews {
CGRect frame = self.bounds;
frame.origin.x += 10.0f;
frame.size.width -= 20.0f;
_label.frame = frame;
}
@end
MyPickerView
在
pickerView:viewForRow:forComponent:reusingView:
.
关于objective-c - UIPickerView viewForRow UILabel 忽略框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847219/
我正在使用多个组件来制作计时器。当我将 pickerView 与 ViewForRow 合并时,我的 pickerView 无法识别我的第二个数据源 let hourDataSource = ["0"
当信息可用时,我正在动态地将数据添加到 pickerview。虽然我将数据添加到我的数组并调用 [picker reloadAllComponents] pickerview 不显示任何数据。 我还注
我在设置 UIPickerView 时遇到问题。我已将其全部设置为教科书,我想更改字体大小,但是: 通过 attributedTitleForRow 更改字体大小没有效果(尽管更改颜色确实有效) vi
我的 View 中有 3 个选择器,其中一个仅包含图像。 因此,对于这个,我必须使用 viewForRow,但对于其他 2 个,它们是带标签的常见选择器,我需要 titleForRow,除非我使用 v
我正在使用 UILabel 作为我的 UIPickerView 的自定义 View ,并且我试图将标签从左侧填充 10px 左右。但是,无论我将 UILabel 设置为哪个框架,它都会被忽略。 我基本
我正在尝试在 UIPickerView 中重新使用带有 subview 的 View : - (UIView *)pickerView:(UIPickerView *)pickerView
我正在尝试根据特定条件更改 viewForRow 中的文本颜色。当我按下按钮时, View 会更改为不同的颜色,但我也想更改选择器中文本的颜色。我使用“viewForRow”是因为我有自定义 View
我想继承 UIPickerView 以创建自定义 DatePicker。我试过了,但是 Swift 中有一个错误说: unexpectedly found nil while unwrapping a
我的 UIPickerView 使用 pickerView:viewForRow:forComponent:reusingView: 方法检索其数据。 由于某种原因,该方法不会影响 iOS 4.3 及
我是一名优秀的程序员,十分优秀!