Ell*_*rez 3 xcode initialization objective-c frame xib
我正在尝试重新编写代码以允许我使用xib来设计自定义UIViews以便在我的项目中重复使用.我创建了一个名为SlidesView的类,它具有相同名称的.xib.我使用以下IBOutlets进行了设置:
@property (nonatomic, retain) IBOutlet UIImageView *ivMain;
@property (nonatomic, retain) IBOutlet UILabel *lHeader;
@property (nonatomic, retain) IBOutlet UITextView *tvMain;
@property (nonatomic, retain) IBOutlet UIImageView *ivIcon;
Run Code Online (Sandbox Code Playgroud)
我确保这些都在.xib文件中正确连接.我还有一个函数,我想用它来设置视图的所有初始数据:
- (void)setupUsingCenter:(CGPoint)center mainImage:(UIImage *)mainImage mainText:(NSString *)mainText header:(NSString *)header andIconImage:(UIImage *)iconImage
Run Code Online (Sandbox Code Playgroud)
'setupUsingCenter:self ...'主体如下所示:
// First check for a main image and image icon
if (mainImage != nil)
{
// Set the image
[self.ivMain setImage:mainImage];
[self.ivMain setFrame:CGRectMake(10, 10, 10, 10)];
// If image icon set that too
if (iconImage != nil)
{
[self.ivIcon setImage:iconImage];
}
}
Run Code Online (Sandbox Code Playgroud)
最后我使用以下代码加载此.xib:
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"SlidesView" owner:nil options:nil];
for (UIView *view in views) {
if([view isKindOfClass:[SlidesView class]])
{
SlidesView *slidesView = (SlidesView *)view;
[slidesView setupUsingCenter:self.vPlaceholder.center mainImage:slideImage mainText:slideText header:slideTitle andIconImage:slideIcon];
[slidesView setTextColours:[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:1.0f]];
[self.view addSubview:slidesView];
self.viewPopup = slidesView;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经将随机setFrame参数放入测试目的但由于某种原因帧不会改变.但是,ivMain上的图像确实发生了变化.任何人都可以解释我如何更改我的UI对象的框架?另外,为什么它允许我更改图像,但框架似乎不可编辑,这是不是意味着它必须初始化?
非常感谢任何帮助,谢谢.
Vik*_*Vik 17
你确定autolayout已经禁用.xib吗?我的理解是,你打开时无法编辑帧autolayout.
如果是这种情况,您可以禁用autolayout该特定.xib,或者您可以使用constraints而不是frame属性
| 归档时间: |
|
| 查看次数: |
4831 次 |
| 最近记录: |