如何以編程方式設置保證金UITableViewCell
而不創建全新的自定義單元格?如何爲uitableviewcell設置保證金
回答
您需要繼承UITableViewCell
和覆蓋layoutSubviews
方法:
- (void)layoutSubviews {
[super layoutSubviews];
CGRect tmpFrame = self.imageView.frame;
tmpFrame.origin.x += 10;
self.imageView.frame = tmpFrame;
tmpFrame = self.textLabel.frame;
tmpFrame.origin.x += 10;
self.textLabel.frame = tmpFrame;
tmpFrame = self.detailTextLabel.frame;
tmpFrame.origin.x += 10;
self.detailTextLabel.frame = tmpFrame;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
此方法將返回該單元格,你可以在它配置電池。只需設置控件的框架,將它們移動到計算位置即可。
你可以發佈一個代碼片段,展示如何增加此方法中單元格的左邊距(或填充左等效)嗎? – JAHelia
要設置左邊距可以使用:
- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath: (NSIndexPath *)indexPath
{
return 1;
}
這不會設置邊距,它會設置指定行的深度,以在該部分中顯示其分層位置。 – Daniel
該解決方案非常巧妙,但如果您想要不幸地減少默認邊距,則無法使用... – turingtested
安德烈有一個很好的解決方案,但如果你使用附屬視圖你需要這樣的代碼:
const int MARGIN = 16; // Left and right margin
- (void)layoutSubviews {
[super layoutSubviews];
/* Add left margin to the image and both labels */
CGRect frame = self.imageView.frame;
frame.origin.x += MARGIN;
self.imageView.frame = frame;
frame = self.textLabel.frame;
frame.origin.x += MARGIN;
frame.size.width -= 2 * MARGIN;
self.textLabel.frame = frame;
frame = self.detailTextLabel.frame;
frame.origin.x += MARGIN;
frame.size.width -= 2 * MARGIN;
self.detailTextLabel.frame = frame;
/* Add right margin to the accesory view */
if (self.accessoryType != UITableViewCellAccessoryNone) {
float estimatedAccesoryX = MAX(self.textLabel.frame.origin.x + self.textLabel.frame.size.width, self.detailTextLabel.frame.origin.x + self.detailTextLabel.frame.size.width);
for (UIView *subview in self.subviews) {
if (subview != self.textLabel &&
subview != self.detailTextLabel &&
subview != self.backgroundView &&
subview != self.contentView &&
subview != self.selectedBackgroundView &&
subview != self.imageView &&
subview.frame.origin.x > estimatedAccesoryX) {
// This subview should be the accessory, change its frame
frame = subview.frame;
frame.origin.x -= MARGIN;
subview.frame = frame;
break;
}
}
}
}
有沒有簡單的WA y處理輔助視圖。 我一直在尋找一段時間,這是迄今爲止我所見過的最好的解決方案。
- 1. Android PopUpWindow - 如何設置保證金?
- 2. UITableViewCell保證金左右
- 3. 設置按鈕保證金
- 4. R pdf設置保證金
- 5. 爲一組按鈕設置保證金
- 6. 如何使用styles.xml爲所有TextView設置保證金
- 7. Android - 如何在GridLayout中爲自定義LinearLayouts設置保證金?
- 8. 我如何保證金值設置爲固定定位的div
- 9. 設置保證金性質代碼
- 10. 如何在頁面上設置保證金頁頂,底部?
- 11. 我如何設置保證金到響應div?
- 12. Android - 如何設置相對於其他控件的保證金?
- 13. 如何在XSLT上動態設置保證金
- 14. 如何以編程設置保證金在WPF形狀
- 15. 如何在章節中設置保證金?
- 16. 如何設置一個TextView的保證金在相對佈局
- 17. 如何設置保證金在對話框
- 18. 如何在圖像間設置保證金
- 19. 如何設置保證金Image控件火花
- 20. 如何使用RootLayoutPanel和DockPanel設置5%的保證金
- 21. 如何在TableRow之間設置保證金android
- 22. 爲最大化窗口設置保證金
- 23. 保證金未設置爲部分標記
- 24. 保證金/填充設置爲0 - 哪個單位是零呢?
- 25. 將保證金頂部設置爲Crouton對象Android
- 26. Android如何設置百分比填充/保證金,以便EditText在兩邊都有10%的保證金?
- 27. 如何爲apache poi設置整個文檔和所有部分的保證金
- 28. 如何設置內部div寬度作爲百分比保證金
- 29. 如何在引導程序中爲列div中的div設置保證金
- 30. 如何將保證金設置爲其他課程中的視圖?
這是一個非常簡單和容易的解決方案,您需要使用此代碼創建新的'UITableViewCell'子類,並更改您的'tableView:cellForRowAtIndexPath:'來分配您的子類別單元而不是常規的'UITableViewCell'。 –